我想将龙卷风服务器的gzip压缩数据发送到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"。
这里有解决方法吗?
答案 0 :(得分:2)
使用self.write_message(compressed_data, binary=True)
发送二进制消息。您还需要更改应用程序的客户端以对其进行解压缩。
请注意,二进制数据可能难以在javascript中使用,因此您可能希望使用websocket压缩扩展而不是自己压缩数据(这将使Tornado自动压缩数据,并且浏览器将对其进行解压缩)。
要启用此功能,请覆盖WebSocketHandler
子类中的get_compression_options()
:
def get_compression_options(self):
return {}
空dict使用默认值,或者您可以返回{'compression_level': 9}
之类的参数。使用此模式时,您只需照常编写邮件,而不是压缩邮件。