5

メッセージをリッスンしているsocket.ioを使用する単純なnode.jsサーバーがあります。Perl スクリプトからサーバーにメッセージを送信しています - サーバーはメッセージを受信して​​いるようですが、メッセージの「チャネル」を認識していません。Perl スクリプトから送信される node.js/socket.io メッセージを正しく作成するにはどうすればよいですか?

これが私のnode.jsサーバーです:

var express = require('express');
var app = express.createServer();
var io = require('socket.io').listen(app);

app.listen(3000);

io.sockets.on('connection', function (socket) {
  console.log("In connection");
  socket.on('testevent', function (data) {
    console.log("In testevent");
    console.log(data);
  });
});

メッセージを送信する Perl スクリプトの一部を次に示します。

#$clientID is set to 1598760311220985572 earlier... obtained from a handshake

$uri = "http://192.168.3.13:3000/socket.io/1/xhr-polling/$clientID";

$message = "5:::{'name':'testevent','args':['hello!']}";

$request = HTTP::Request->new( 'POST', $uri );
$request->content( $message );

print $response = $browser->request( $request )->as_string;

Perl スクリプトからメッセージを受信した後のサーバー ログ:

  info  - handshake authorized 1598760311220985572
  debug - client authorized for 
In connection
  debug - xhr-polling received data packet 5:::{'name':'testevent','args':['hello!']}

そのため、node.js サーバーはメッセージを受信して​​いるように見えますが、チャネル「testevent」を認識していません。これは、サーバーがメッセージを正しく解釈した場合、「In testevent」という文字列をログに記録すると予想されるためです。

Perl でメッセージを正しくフォーマットしていますか、それともサーバー コードが間違っているのでしょうか?

4

0 に答える 0