【问题标题】:Delay when sending information to client using node.js and socket.io使用 node.js 和 socket.io 向客户端发送信息时的延迟
【发布时间】:2019-09-10 05:07:15
【问题描述】:

我有一个用 node.js 编写的带有计时器功能的应用程序。只要一秒钟过去,服务器就会将新的时间值发送给每个连接的客户端。虽然这在 localhost 上运行良好,但在线托管时非常不稳定。客户端不会立即更新,有时值会一次跳跃两三秒。

然而,我发现,如果我反复向客户端发送计时器数据(使用 setInterval),它会完美运行,不会从任何地方延迟。

有人知道为什么会这样吗?为什么更频繁地发送相同的数据会解决问题对我来说没有意义。如果有的话,这不应该更慢吗?我在想我可以使用这种方法并让客户端在更新时通知服务器,但这似乎没有必要且效率低下。

我对 node.js 很陌生,但这让我很困惑。任何见解将不胜感激。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    你在哪里托管它?它支持网络套接字吗?一些主机不支持/允许它们。我的猜测是您的主机不允许 websockets 和 socket.io 正在回退到轮询传输。

    在您的浏览器中,您可以找到 websocket 连接并在开发人员工具中检查它: How do you inspect websocket traffic with Chrome Developer Tools?

    如果它没有经历101 Switching Protocols http 状态以成功将第一个请求升级到 websocket,您将在开发者工具中看到轮询请求再次出现。

    【讨论】:

    • 感谢您的帮助。出于某种原因,我正在测试的浏览器使用的是轮询而不是 Web 套接字。
    • 很高兴有帮助!
    猜你喜欢
    • 2011-06-06
    • 2012-05-24
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    相关资源
    最近更新 更多