Websocket 连接不会在 FireFox 中关闭

Posted

技术标签:

【中文标题】Websocket 连接不会在 FireFox 中关闭【英文标题】:Websocket connection doesn't close in FireFox 【发布时间】:2011-12-18 09:14:41 【问题描述】:

尝试从 firefox (8.0.1) 关闭 websocket 连接时似乎出现问题。 使用 Chrome 时,如果您使用 WebSocket.close() 连接会立即关闭,在 Firefox 中我可以等待大约 30 秒,直到它关闭连接并出现错误。

有什么建议可以绕过 Firefox 中的这个问题吗?

【问题讨论】:

加载页面时与 ws://10.0.0.1:8121/chat 的连接中断。 你使用的是什么 WebSocket 服务器? 【参考方案1】:

如果服务器不支持从 firefox 发送的握手格式,您可能会遇到该错误。我遇到了 Aleph 的错误,因为它没有正确支持握手的 Connection 标头中的多个值,这对 firefox 来说是合法的,但也与 Chrome 的行为方式不同(连接标头中只有一个值) .

如果客户端向您发送关闭消息(操作码 0x8),服务器应以关闭消息响应干净关闭。来自规范:“如果端点接收到关闭帧并且之前没有发送关闭帧,则端点必须发送关闭帧作为响应。”如果服务器出于某种原因断开客户端,则服务器应发送关闭消息。请参阅规范的5.5.1 和7.4 部分。

【讨论】:

onOpen 事件被触发...所以连接是打开的 什么时候会出现“页面加载中断”?是在页面加载时(如所示)还是在您尝试断开连接后? 听起来可能是服务器问题。 Close 对我来说与 Firefox 8 配合得很好。您使用的是什么 WebSocket 服务器? 这是我构建的一个 .net c# 服务器。当与 Firefox 的连接关闭时,也许我需要在服务器中捕获一些东西?因为在 chrome 中它工作正常......

以上是关于Websocket 连接不会在 FireFox 中关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 IP 地址连接 Firefox 扩展中的 websocket 客户端

如果服务器崩溃,Websocket onclose/onerror 事件不会触发

为啥 Firefox 不等待 WebSocket 连接?

如何手动模拟 websocket 断开连接? (Firefox 或 Chrome 开发工具)

Jetty 9.2.x Websocket Server连接在使用Firefox而不是Chrome时连接后自动关闭

Websocket wss 连接在本地主机上的 Firefox 89 中不起作用