簡體   English   中英

Node.js socket.io-服務器上看不到客戶端發出

[英]Node.js socket.io - client emit not seen on server

我試圖在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

建立了連接,數據從服務器移動到客戶端,但是當客戶端觸發套接字事件時,我看不到服務器上發出的相應事件。

我相信pingpong是socket.io中的保留消息名稱。 我建議您將這些消息名稱更改為其他名稱。 socket.io有一些保留的消息名稱,它們沒有得到很好的記錄,它可能應該努力使用不太可能的名稱,但是由於所有客戶端都已經存在,因此它們可能會卡在已有的名稱中。

這是一個通過更改消息名稱而解決的類似問題

另外,如果您的客戶發送代碼有問題,請在問題中包含相關代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM