2

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

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

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

还有什么其他的通信方式,比如本地unix套接字或其他?

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

4

2 回答 2

1

写一个关于你的问题的完整答案太多了,因为我很久以前就没有使用过 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()) });
});
于 2013-05-08T20:36:30.763 回答
1

几个选项:

ZeroMQ -节点绑定Perl 绑定

dnode - perl dnode 协议支持

消息传输(例如 RabbitMQ)和网络通信的许多可能性......但是坚持使用 HTTP(在 SSL/TLS 之上)以获得随之而来的所有支持肯定会很好。

于 2013-05-08T14:30:37.627 回答