我想把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”。在
这里有什么解决办法吗?在
使用
self.write_message(compressed_data, binary=True)
发送二进制消息。您还需要更改应用程序的客户端来解压缩它。在请注意,二进制数据在javascript中很难使用,因此您可能希望使用websocket压缩扩展而不是自己压缩数据(这将使Tornado自动压缩数据,浏览器将对其进行解压缩)。在
要启用此功能,请重写} :
WebSocketHandler
子类中的^{空dict使用默认值,或者您可以返回参数,如
{'compression_level': 9}
。当使用这种模式时,你只需像往常一样编写信息,而不是压缩它。在相关问题 更多 >
编程相关推荐