我正在尝试在Node.js中组合一个简单的Socket.IO测试用例,但我没有看到从客户端发出的事件到达服务器。
var http = require("http"),
io = require("socket.io"),
io_client = require("socket.io-client"),
listener, port, server, url,
socketServer, socketClient,
i = 0;
port = process.env.LISTEN_PORT || 80;
url = "http://localhost:" + port;
server = http.createServer();
socketServer = io(server);
socketClient = io_client(url);
socketServer.on("connection", function(socket) {
console.log("server:connection");
socket.emit("ping", ++i);
socket.on("pong", function(data) {
console.log("server:pong", data);
});
});
socketClient.on("ping", function(data) {
console.log("client:ping", data);
socketClient.emit("pong", data);
});
listener = server.listen(port, function() {
console.log("Listening on port " + listener.address().port);
});
预期输出
Listening on port 80
server:connection
client:ping 1
server:pong 1
实际输出
Listening on port 80
server:connection
client:ping 1
建立连接,数据从服务器移动到客户端,但是当客户端触发套接字事件时,我看不到服务器上发出的相应事件。
答案 0 :(得分:2)
我相信ping
和pong
是socket.io中的保留消息名称。我建议你将这些消息名称更改为其他名称。 socket.io有一些保留的消息名称没有很好的记录,它可能应该努力使用不太可能的名称,但由于所有客户端已经在那里,他们可能会坚持他们拥有的。
这是通过更改消息名称修复的similar question。
此外,如果您的客户发送代码有问题,请在您的问题中包含相关代码。