node.js 和 perl Catalyst 应用程序之间如何通信?
我有两个应用程序:Node.js 和 Catalyst。
现在这两个应用程序通过 HTTP 相互通信。但这不是快速和安全的方式。
还有什么其他的通信方式,比如本地unix套接字或其他?
我可以使用哪些 perl 模块和 node.js 包?
node.js 和 perl Catalyst 应用程序之间如何通信?
我有两个应用程序:Node.js 和 Catalyst。
现在这两个应用程序通过 HTTP 相互通信。但这不是快速和安全的方式。
还有什么其他的通信方式,比如本地unix套接字或其他?
我可以使用哪些 perl 模块和 node.js 包?
写一个关于你的问题的完整答案太多了,因为我很久以前就没有使用过 Catalyst,但是这里有一个简单的工作 UNIX Socket perl-server,node-client 提案
服务器 :
#!/usr/bin/perl -w -T
use strict;
use IO::Socket::UNIX;
use threads;
my $socket_path = "/tmp/test_socket";
unlink($socket_path);
my $socket = IO::Socket::UNIX->new(
Local => $socket_path,
Type => SOCK_STREAM,
Listen => 1,
);
die "Can't create socket: $!" unless $socket;
print "waiting for connections\n";
while (1) {
my $client;
do {
$client = $socket->accept;
} until ( defined($client) );
my $thr = threads->new( \&processit, $client )->detach();
}
sub processit {
my ($client) = @_;
if($client->connected){
print $client "Hello from server\n";
while(<$client>) { print "$_\n" };
}
close( $client );
}
客户 :
#!/usr/bin/env node
var net = require('net'),
fs = require('fs'),
sock;
var c = net.createConnection('/tmp/test_socket');
c.on('connect', function(socket) {
console.log('connected');
c.write("Hello from NodeJS");
c.on('data', function(data) { console.log('perl: '+data.toString()) });
});
几个选项:
消息传输(例如 RabbitMQ)和网络通信的许多可能性......但是坚持使用 HTTP(在 SSL/TLS 之上)以获得随之而来的所有支持肯定会很好。