为什么Socket.io在Windows上很慢?

时间:2018-03-04 02:14:31

标签: node.js socket.io

我最近注意到Socket.io在Windows上变得非常慢。当我打开两个标签并尝试发出事件时,我注意到了这一点。从服务器接收响应花了超过15秒。服务器在NodeJS上编码。

Environment:
Windows 10 Pro
Electron Socket.io-Tester
Socket.io - Version 2.0.4

2 个答案:

答案 0 :(得分:2)

我遇到了这个问题。曾经在Windows上工作正常(并且仍然在MacOS上工作),现在发出的只是在延迟中丢失,多达5秒。这只发生在第二次或更多连接到服务器时 - 因为我正在开发一个多玩家游戏,这非常重要。 emit事件工作正常,您可以在框架中看到它,它只是让服务器永远响应。

经过多次实验,我可以得出结论,这是NodeJS LTS本身存在的问题。这是在v6.13.1中工作,但不适用于更高版本(不确定它的启动位置,也不打算逐步升级节点)。

降级节点以安全地解决此问题。乐趣。

答案 1 :(得分:0)

在你的代码中是否有任何代理?这有时会使事情变得混乱。

如果有代理,我发现了一个与“Socket是慢问题”相关的要点,这是由代理引起的。这个Gist是问题的“修复”,也许会有所帮助。此代码段是代理配置。

    var server = http_m.createServer(function(req, res) {   
    switch(req.headers.host) {
    case "ws.app.com":
        handle_ws(req, res);
        break;
    case "api.app.com":
        handle_api(req, res);
        break;
    default:
        handle_error(req, res);
        break;
    }
});

server.on("upgrade", handle_ws_upgrade);
server.listen(80);