MozWebSocket 不响应握手

Posted

技术标签:

【中文标题】MozWebSocket 不响应握手【英文标题】:MozWebSocket not responding to handshake 【发布时间】:2012-02-04 15:49:12 【问题描述】:

Firefox 10 不会接受(我真的不知道?)我的握手。 Offcorse 这是 Mozilla 然后使用 MozWebSocket 而不是 WebSocket。我的服务器响应头是:

                $reply = "HTTP/1.1 101 Switching Protocols\r\n" .
                        "Upgrade: websocket\r\n" .
                        "Connection: Upgrade\r\n" .
                        "Sec-WebSocket-Accept: $accept\r\n\r\n";

它在 Chrome 16 下完美运行,但在 Firefox 上它只是在等待某些东西,即使服务器说握手完成。然后一段时间后,offcorse 客户端进入状态 3 (DISCONNECT)。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您是否确认您正确且完整地阅读了开头的标题?目前 Chrome 和 FireFox 之间 websocket 握手处理的主要区别在于,FireFox 更充分地通过缓存、接受编码、用户代理等填充 websocket 握手请求。特别是仔细检查“连接”标头,每个 RFC 可以有多个值并在 FireFox 上执行,但在 chrome 上不执行。 FireFox 连接标头通常如下所示:“Connection: keep-alive, Upgrade”。这可能会使不期望该标头具有多个值的握手解析器出错。

否则你的握手响应在我看来是正确的,假设 $accept 值被正确计算,如果 Chrome 接受它,听起来就是这样。

【讨论】:

是的,firefox 发送“Connection: keep-alive, Upgrade”,我该怎么办?【参考方案2】:

我刚刚意识到这是我的 Firefox (?) 犯规了。我卸载了 FF,删除了整个私人数据(真的是所有数据!),我又安装了 FF 一次……同样的问题!所以我不知道是我的 Windows 问题还是……没关系……谢谢你所做的一切。

【讨论】:

以上是关于MozWebSocket 不响应握手的主要内容,如果未能解决你的问题,请参考以下文章

为啥客户端不接受我的 WebSocket 响应握手?

WebSocket是什么?

Websocket 服务器握手响应

webSocket 握手期间的错误意外响应代码:400

HTML5 / PHP WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:200

git lfs 批处理响应:发布 https://../info/lfs/objects/batch: ..proxyconnect tcp: tls: 第一条记录看起来不像 TLS 握手