gpt4 book ai didi

node.js - 为什么我的 socket.io 使用长轮询而不是 websocket?

转载 作者:IT老高 更新时间:2023-10-28 23:07:19 25 4
gpt4 key购买 nike

所以我用 NodeJS + ExpressJS 服务器设置了 socket.io,一切都运行良好。唯一的问题是我刚刚意识到我的 emit() 调用正在使用后备 XHR 方法将事件发送到我的服务器,而不是它打开的 websocket 连接。

当我查看连接时,我看到的只是一些 2probe3probe,然后是通过 websocket 发送的一堆 2 和 3。此连接似乎已打开且正常工作,那么为什么它会退回到使用 XHR 请求进行长轮询?

我现在不提供任何代码,因为我不确定哪个部分是相关的,因为代码的功能方面运行良好,我只想通过 XHR 使用 websocket。有什么想看的代码告诉我

更新

所以我对套接字进行了更多测试,并添加了更多 emit() 调用。似乎最初的 1 或 2 个发射使用长轮询,然后突然切换到使用 websocket。只是好奇这里发生了什么。

最佳答案

从 Socket.IO 1.x 开始,回退算法从降级方法变为升级方法。

长轮询几乎在任何地方都有效,所以一开始就使用它,这样您就可以立即获得“连接”。然后在后台尝试将长轮询连接升级为 websocket 连接。如果升级成功,长轮询停止, session 切换到 websocket 连接。如果不成功,长轮询“连接”保持打开状态并继续使用。

关于node.js - 为什么我的 socket.io 使用长轮询而不是 websocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com