【发布时间】:2012-07-25 09:28:05
【问题描述】:
WebSocket握手成功后,我们可以使用gzip压缩吗?
这是我的测试:
- 我使用 autobahn lib 构建服务器,然后响应客户端为:
HTTP/1.1 101 Switching Protocols content-encoding: gzip Connection: Upgrade Server: AutobahnPython/?.?.? Upgrade: WebSocket Sec-WebSocket-Accept: RIR8KmljoV8Cv9mdiLY7GM2nYMc= - 那么我的服务器使用 gzip 压缩
- chrome 浏览器得到了结果,但它告诉我“无法将文本帧解码为 UTF-8”
【问题讨论】:
-
AutobahnPython(当前)不支持每帧压缩扩展。在任何情况下,支持信号都是通过 WebSocket 特定的 HTTP 标头完成的,而不是“内容编码”。
-
感谢提醒。无论如何,在使用 websocket 时,有一种简单的方法可以支持 gzip 压缩作为 http 方法吗?
-
没有。为了在 WebSocket 上使用压缩,需要实现扩展,这需要“深入底层”的大量代码。
-
压缩工作是否成功?我自己对此很感兴趣。
-
AutobahnPython 现在支持“permessage-deflate”。您可以使用 Chrome Canary(目前唯一实现它的浏览器)对其进行测试。您需要 AutobahnPython GitHub 上的 permessage_deflate 分支或等待 0.6.0 - 即将发布。