Node.js socket.io - 客户端在服务器

时间:2016-03-26 00:01:16

标签: node.js socket.io

我正在尝试在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

建立连接,数据从服务器移动到客户端,但是当客户端触发套接字事件时,我看不到服务器上发出的相应事件。

1 个答案:

答案 0 :(得分:2)

我相信pingpong是socket.io中的保留消息名称。我建议你将这些消息名称更改为其他名称。 socket.io有一些保留的消息名称没有很好的记录,它可能应该努力使用不太可能的名称,但由于所有客户端已经在那里,他们可能会坚持他们拥有的。

这是通过更改消息名称修复的similar question

此外,如果您的客户发送代码有问题,请在您的问题中包含相关代码。