gpt4 book ai didi

compression - 添加 permessage-deflate 响应 header 后,websocket 帧是否会自动压缩?

转载 作者:行者123 更新时间:2023-12-04 03:11:20 27 4
gpt4 key购买 nike

底线:

我没有看到压缩的 websocket 消息,即使请求和响应中都存在 permessage-deflate header 。

一些细节:

我有一个 nodejs 服务器,我使用 Primus(下面有 engine.io)。我使用 Primus 的“压缩”功能,以支持 permessage-delate。

打开它后,我开始在响应中看到 permessage-deflate header 。

但我没有看到 websocket 帧本身被压缩。

我使用 charlesproxy 嗅探流量,再次 - 帧看起来与我打开“压缩”功能之前一样。

插图:

这是来自 websocket 握手的示例请求:

Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,he;q=0.6,fr;q=0.4
Cache-Control:no-cache
Connection:Upgrade
Cookie:[some cookies]
Host:[our host]
Origin:https://[our host]
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:6nMxnGd0E8GrDg2s1B4tHQ==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

这是相应的响应:

Connection:upgrade
Date:Tue, 11 Jul 2017 14:10:18 GMT
Sec-WebSocket-Accept:lLjOXWbLRVIHw2inxrhx0U1ryrM=
Sec-WebSocket-Extensions:permessage-deflate; client_no_context_takeover
Sec-WebSocket-Version:13
Server:nginx
Upgrade:websocket
WebSocket-Server:uWebSockets

这些示例取自 Chrome 开发工具网络检查器。我在 charlesproxy 嗅探器中看到类似的东西。

其他引用:

我看到了这个:

Implementing permessage-deflate in WebSockets

但我在那里找不到有效的答案。

所以...

我在这里错过了什么?我需要实现更多吗?我需要包含任何库吗?

版本:

  • 节点 - 4.2.4
  • primus - 7.0.2
  • Chrome :59.0.3071.115
  • FF: 54.0.1
  • 查尔斯:4.1.4

非常感谢!

最佳答案

问题是 uws 不压缩数据,即使它被指示这样做也是如此。

见本期https://github.com/socketio/engine.io/issues/474

如果您告诉 engine.io 使用 ws 而不是 uws,它应该可以工作。您可以通过将 EIO_WS_ENGINE 环境变量设置为 ws 或使用 engine.iowsEngine 选项来实现。

我认为还有一个大小阈值,在该阈值下消息不会被压缩。如果我没记错的话,它是 1 KiB。

关于compression - 添加 permessage-deflate 响应 header 后,websocket 帧是否会自动压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com