node.js와 perl Catalyst 응용 프로그램 간의 통신 방법은 무엇입니까?Catalyst 및 Node.js 통신 방법
Node.js와 Catalyst의 두 가지 응용 프로그램이 있습니다.
이제이 두 응용 프로그램은 HTTP로 서로 통신합니다. 그러나 그것은 빠르고 안전하지 않습니다.
로컬 유닉스 소켓 또는 다른 것과 같이 통신하는 다른 방법은 무엇입니까?
어떤 펄 모듈과 node.js 패키지를 사용할 수 있습니까?
node.js와 perl Catalyst 응용 프로그램 간의 통신 방법은 무엇입니까?Catalyst 및 Node.js 통신 방법
Node.js와 Catalyst의 두 가지 응용 프로그램이 있습니다.
이제이 두 응용 프로그램은 HTTP로 서로 통신합니다. 그러나 그것은 빠르고 안전하지 않습니다.
로컬 유닉스 소켓 또는 다른 것과 같이 통신하는 다른 방법은 무엇입니까?
어떤 펄 모듈과 node.js 패키지를 사용할 수 있습니까?
옵션의 몇 :
ZeroMQ-Node binding; Perl binding
dnode-perl dnode protocol support
지원의 모든메시지 전송 (예 : RabbitMQ) 및 네트워크 통신을위한 가능성의 많은 ... 그러나 확실히 (SSL/TLS의 상단에) HTTP를 고수하는 것이 좋을 것이다 그걸로 올거야.
내가 오래 전부터 촉매와 함께 일을 갖고 있지 않기 때문에, 당신의 문제에 대한 완전한 답을 작성하는 너무 많은,하지만 여기 간단한 작업 UNIX 소켓 펄 서버, 노드 클라이언트의 제안을 갈
서버 :
#!/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()) });
});
동일한 서버에서 호스팅이 두 응용 프로그램의 모든. 아니 네트워크 통신 (로컬)도 나를 위해 =) 또한 그 사이에 데이터를 보낼 필요가 –
당신이 libperl + +를 사용하거나 심지어 노드에서 펄 스크립트를 생성하는 네이티브 노드 확장을 작성할 수 있다고 생각하지만, 이것은 훨씬 더 문제가 될 것 같습니다 그것은 가치가있다. 네트워크 통신 프로토콜 추상화 (기술 불가지론)를 통해 언어 스택을 두 개의 응용 프로그램을 느슨하게 결합하는 이점을 활용할 수 있습니다. 내 추천은 로컬 종속성 (node.js -> perl을 브리징 할 때조차도)이다. –
ZeroMQ 멋진입니다! 감사! 내 응용 프로그램을 매우 유연하고 확장 가능하게 만듭니다. –