gpt4 book ai didi

websocket - Edge浏览器Websocket连接将在空闲时间后自动关闭

转载 作者:行者123 更新时间:2023-12-02 23:06:34 27 4
gpt4 key购买 nike

我在新的 Window Edge 浏览器上做了一个关于 Websocket 的测试。

似乎 Edge 浏览器上的 websocket 连接会在空闲时间后自动关闭(没有数据传输 b/w 2 端点)。在 Chrome 或 Firefox 上不会出现此问题。

我只是想知道:在Edge浏览器上初始化websocket连接时是否需要进行任何额外配置以保持连接打开?

我真的不想实现心跳机制,因为实际上一切在其他浏览器上仍然运行良好。

最佳答案

这可能不是您想要的答案,但是......

大多数 Websocket 应用程序的生产环境都在 Websocket 代理(Apache、Nginx 等)后面运行,该代理通常也充当负载均衡器。

这些服务器还将实现避免半关闭套接字所需的“超时”机制(当只有一侧关闭连接并且没有数据传输时,不会引发错误并且文件句柄可以无限期地保持打开状态)。

例如,Heroku enforces a 55 second timeout window .

这意味着您可能应该设置心跳 - 即使您的开发应用程序没有遇到关闭情况。

如果您正在编写服务器端应用程序并可以控制 Websocket,则可能应该设置不会导致引发 onmessage 事件的 ping 帧(ping 和 pong 帧)有不同的操作码并且不属于常规消息序列)。

某些 websocket 框架(例如 Ruby 上的 Plezi)会自动设置 ping 作为默认选项,但某些服务器/框架将其留给您。

总结:

这些断开连接将是生产环境预期行为(甚至是必需的行为)。尽管这也很可能是 MS Edge 问题,但您可能必须在这两种情况下实现检测信号。

附注

Websocket 标准规定:

Servers MAY close the WebSocket connection whenever desired. Clients SHOULD NOT close the WebSocket connection arbitrarily.

服务器(以及 Websocket 代理和负载均衡器)使用它来建立超时。 重新连接是客户端的责任

MS Edge 确实不应该使用超时,因为根据标准,这不是预期的行为...尽管 Edge 可能会这样做以确保连接仍然打开(通过强制脚本重新连接为对服务器任意断开连接的 react )。

关于websocket - Edge浏览器Websocket连接将在空闲时间后自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066963/

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