如何在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