如何在node.js和perl Catalyst应用程序之间进行通信?如何沟通Catalyst和Node.js
我有两个应用程序:Node.js和Catalyst。
现在这两个应用程序通过HTTP进行通信。但这不是快速和安全的方式。
什么是另一种沟通其方式,如本地Unix套接字或其他方式?
可以使用哪些perl模块和node.js包?
如何在node.js和perl Catalyst应用程序之间进行通信?如何沟通Catalyst和Node.js
我有两个应用程序:Node.js和Catalyst。
现在这两个应用程序通过HTTP进行通信。但这不是快速和安全的方式。
什么是另一种沟通其方式,如本地Unix套接字或其他方式?
可以使用哪些perl模块和node.js包?
几个选项:
ZeroMQ - Node binding; Perl binding
dnode - perl dnode protocol support
大量的消息传输(如RabbitMQ的)和网络通信的可能性......但它肯定会是不错的坚持与HTTP(在SSL/TLS的顶部)为所有支持这将随之而来。
这是太多写关于您的问题,一个完整的答案,因为我还没有催化剂,因为很久以前的工作,但在这里你去一个简单的工作Unix套接字Perl的服务器,节点客户端建议
服务器:
#!/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()) });
});
都在同一服务器托管的这两个应用程序。没有网络通信(本地)很适合我=) 另外我只需要在其 – 2013-05-08 14:47:27
之间发送数据我想你可以编写一个使用libperl ++的本机节点扩展,或者甚至从节点产生perl脚本,但是这看起来比值得的。网络通信协议抽象(技术无关)使您可以桥接语言堆栈,并将两个应用程序松散耦合。我的建议,即使是本地依赖(当桥接node.js - > perl时)。 – 2013-05-08 20:42:17
ZeroMQ很酷!谢谢!它使我的应用程序在将来非常灵活和可扩展 – 2013-05-28 14:11:43