4

我们遇到了 Chrome 19 websockets 的问题。它正在尝试使用x-webkit-deflate-frame扩展连接到我们的服务器。但是,我不知道如何向该客户表明我们不支持该扩展程序(或者如果它是 Chrome 19 错误并且只是忽略了我们不支持它的事实?)。我在一些 SO 答案中看到了与此相关的问题,但我看不到一致的解决方案。

例如,如果我们收到标头

Upgrade: websocket
Connection: Upgrade
Host: titantest:30100
Origin: http://titantest
Sec-WebSocket-Key: f+7h4rrKKqdRRdD7WwTZow==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame

我们应该用什么来回应?

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 3eazAhsFLXFWB1OjcYMtzP13yag=

然后附加到我尝试了各种Sec-WebSocket-Extension品种

Sec-WebSocket-Extension: '-'
Sec-WebSocket-Extension: -
Sec-WebSocket-Extension: 
<- blank: don't send a Sec-WebSocket-Extension header ->

我面前还有一份 websocket 协议的副本,所以请随时指出我错过/误读的内容。

4

2 回答 2

2

RFC 6455 的第 9.1 节处理扩展协商。

客户端提出一个扩展列表,服务器从那些它想要接受的提议中进行选择,并使用其返回的 Sec-WebSocket-Extensions 标头指示该选择。它可以通过在服务器握手响应中根本不包含扩展标头来接受 none。

当您不返回扩展标头时,chrome 19 是否存在特定问题?

于 2012-07-18T16:11:26.387 回答
0

从响应中省略 Sec-WebSocket-Extension 是正确的方法。

您还需要确保您正在取消屏蔽接收到的数据。如果您只是想接收文本,除非它被取消屏蔽,否则它会显示为乱码。

该站点对如何取消屏蔽通过 websocket 连接接收到的数据有一个很好的解释:http: //lucumr.pocoo.org/2012/9/24/websockets-101/

于 2014-03-18T21:39:02.373 回答