【问题标题】:why is Socket.io is very slow on windows?为什么 Socket.io 在 Windows 上很慢?
【发布时间】:2018-08-11 23:24:45
【问题描述】:

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

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

【问题讨论】:

  • 您的 socket.io 实现/配置中的某些内容无法正常工作,因为这是不正常的,也不是 Windows 特有的。您是否 100% 确定您在客户端和服务器上拥有完全相同的 socket.io 版本?

标签: node.js socket.io


【解决方案1】:

我遇到了这个确切的问题。过去在 Windows 上运行良好(在 MacOS 上仍然如此),现在发射只是在延迟中丢失,长达 5 秒。这仅在与服务器建立第二个或更多连接时发生 - 因为我正在开发多人游戏,这非常重要。发射事件工作正常,您可以在框架中看到它,服务器响应它需要很长时间。

经过大量实验,我可以有把握地得出结论,这是 NodeJS LTS 本身的问题。这在 v6.13.1 中有效,但不适用于更高版本(不确定它从哪里开始,并且不会打扰增量升级 Node)。

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

【讨论】:

  • 在 Windows 10 上降级到 v6.13.1 对我不起作用。不知道我错过了什么。
【解决方案2】:

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

如果有代理,我发现了一个与“Socket is slow issue”相关的要点,这是由代理引起的。这个Gist 是对这个问题的“修复”,也许它会有所帮助。这个 sn-p 是代理配置。

    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);

【讨论】:

  • 嗨,感谢您的评论,不。没有代理。我在没有任何代理的本地主机上测试这个。
  • 可能与多个选项卡导致多个套接字连接的事实有关。他们在此问题线程中使用 socket.io 打开多个选项卡的多个连接突出问题和解决方法。 github.com/socketio/socket.io-client/issues/628
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 2014-10-16
  • 2023-01-09
  • 1970-01-01
  • 2010-10-29
  • 2010-11-12
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多