从WebSocket解压缩Zlib数据

4
我正在探索使用websocket发送以zlib编码的数据,编码参数为zlib-stream。我想使用zlib库,但似乎无法正常工作。
import zlib

print(zlib.decompress(text.encode()))

它给我抛出一个错误 zlib.error: 解压数据时发生错误-3:头部检查不正确。这是一个Discord的URL wss://gateway.discord.gg/?encoding=json&v=8&compress=zlib-stream。 这是一个示例,二进制消息:wp0KLShOhRZ6FibUSIWgpRPGpuCZaCNqpULQIgFLYNIGlt2UFEcGwyQVAgAAAP//

请在您的问题中以十六进制提供流的前十个字节。 - Mark Adler
假设这是Base64编码,那么该消息中没有zlib、gzip或deflate数据。 - Mark Adler
1个回答

5

您需要创建解压缩对象,并从头开始解压缩每个消息。您不能仅仅解压缩随意的消息。

decompress_obj = zlib.decompressobj()
for compressed_message in messages:
    message = decompress_obj.decompress(compressed_message)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接