我可以用Python通过tornado websocket发送gzip压缩数据吗?

2024-10-02 22:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把gzip压缩数据从tornado服务器发送到javascript客户端。这是我的密码。在

buf = StringIO()
gfile = gzip.GzipFile(mode='wb', fileobj=buf)
try:
    gfile.write( "hello world" )
finally:
    gfile.close()

compressed_data = buf.getvalue()    
self.write_message( compressed_data )

服务器端不提供错误。但是chrome会产生一个错误“无法将文本帧解码为UTF8”。在

这里有什么解决办法吗?在


Tags: 数据密码客户端data错误javascriptcompressedtornado
1条回答
网友
1楼 · 发布于 2024-10-02 22:28:13

使用self.write_message(compressed_data, binary=True)发送二进制消息。您还需要更改应用程序的客户端来解压缩它。在

请注意,二进制数据在javascript中很难使用,因此您可能希望使用websocket压缩扩展而不是自己压缩数据(这将使Tornado自动压缩数据,浏览器将对其进行解压缩)。在

要启用此功能,请重写WebSocketHandler子类中的^{}

def get_compression_options(self):
    return {}

空dict使用默认值,或者您可以返回参数,如{'compression_level': 9}。当使用这种模式时,你只需像往常一样编写信息,而不是压缩它。在

相关问题 更多 >