如何沟通Catalyst和Node.js

如何在node.js和perl Catalyst应用程序之间进行通信?

我有两个应用程序:Node.js和Catalyst。

现在这两个应用程序通过HTTP进行通信。 但这不是快速和安全的方式。

还有什么其他的沟通方式,像本地unix套接字或其他?

我可以使用哪些perl模块和node.js包?

几个选项:

ZeroMQ – 节点绑定 ; Perl绑定

dnode – perl dnode协议支持

消息传输(例如RabbitMQ)和networking通信的许多可能性…但是坚持使用HTTP(在SSL / TLS的基础上)将会很好地支持随之而来的所有支持。

关于你的问题写一个完整的答案太多了,因为很久以前我还没有和Catalyst一起工作过,但是在这里你可以find一个简单的工作UNIX Socket perl-server,node-client proposal

服务器:

#!/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()) }); });