Websocket 连接在 chrome 中有效,但在 Firefox 中无法连接?

Muh*_*mer 4 firefox google-chrome websocket node.js socket.io

一切都在 chrome 中正常工作。没问题。

在 Firefox 中,我收到一个错误:Firefox 无法与位于 wss://domain.com 的服务器建立连接

如果您转到https://websocket.org/echo.html并用 chrome 中的 wss://domain.com 替换位置,则这是可重现的,它可以工作,而 ff 则不能。

我无法弄清楚为什么?

使用 Nodejs 并在 heroku 上运行,在 cloudflare 后面。

编辑

所以我根据布拉德的提示进行了修复。

我正在为 websocket使用https://github.com/websockets/ws/blob/master/doc/ws.md。它有一个选项perMessageDeflate

现在禁用它使其在 FF 中工作。

不确定发生了什么,但这修复了它。(我是否也想在客户端使用这个库?)

我在 MDN 上找到的唯一东西就是这个

Gecko 8.0 从 Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5) 开始,WebSocket 协议的 deflate-stream 扩展已被禁用,因为它已从规范草案中弃用。这解决了与某些站点的不兼容问题。

Bra*_*rad 5

Firefox 用户会收到 400 Bad Request 的回复。至于原因,目前还不是很明显。Firefox 和 Chrome 之间的请求数据几乎相同。我看到的唯一区别是 Chrome 有更多的这个标题:

Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits=10; server_no_context_takeover; client_no_context_takeover; server_max_window_bits=10.
Run Code Online (Sandbox Code Playgroud)