Javascript 我应该如何格式化socket.io消息以从Perl脚本发送到node.js?
我有一个简单的node.js服务器,它使用socket.io监听消息。我从一个Perl脚本向服务器发送消息——服务器似乎正在接收消息,但无法识别消息的“通道”。如何正确构造要从Perl脚本发送的node.js/socket.io消息 这是我的node.js服务器:Javascript 我应该如何格式化socket.io消息以从Perl脚本发送到node.js?,javascript,perl,node.js,socket.io,Javascript,Perl,Node.js,Socket.io,我有一个简单的node.js服务器,它使用socket.io监听消息。我从一个Perl脚本向服务器发送消息——服务器似乎正在接收消息,但无法识别消息的“通道”。如何正确构造要从Perl脚本发送的node.js/socket.io消息 这是我的node.js服务器: var express = require('express'); var app = express.createServer(); var io = require('socket.io').listen(app); app.l
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正确格式化消息,还是服务器代码错误?可以使用纯TCP。看起来有一个用于socket.io的perl库叫做PocketIO,但它可能无法直接互操作,我还没有检查过。可能是的。但你可能应该使用。这很有趣。您在哪里为内容提供了JSON语法,特别是
5::
?发布内容时,socket.io是否需要在内容之前添加标题()
(与socket.emit()
)相比?