【问题标题】:tornado websocket compression optionstornado websocket 压缩选项
【发布时间】:2019-05-22 17:18:55
【问题描述】:

tornado目前有一个功能:

WebSocketHandler.get_compression_options()

目前人们是否正在为 websockets 使用一种当前领先的压缩方法? Tornado 将来会采用这些压缩方法吗?客户端将如何解压收到的消息?

【问题讨论】:

    标签: websocket tornado


    【解决方案1】:

    Tornado 支持根据RFC 7692 的 websocket 压缩。要启用压缩,请从 get_compression_options() 返回一个空字典(而不是 None,这是默认设置并禁用压缩)。如果在连接的两侧都启用了压缩,它将自动使用;这对应用程序是透明的。

    将来,可能会返回此字典中的其他选项(例如compression_level 参数),以在压缩量和 CPU/内存使用量之间进行权衡,尽管目前没有实现此类选项。

    【讨论】:

    • 谢谢 Ben,是什么决定了客户端是否启用了压缩?我需要在 HTTP 标头中设置一些内容吗?或者为客户做点什么来压缩?我无法想象像这样的低级选项可用于在浏览器中进行配置?
    • 如果客户端也是龙卷风,websocket_connect 函数采用compression_options 参数。我不了解其他客户
    【解决方案2】:

    4.0 支持压缩

    WebSocketHandler.get_compression_options()

    示例代码:

    class ChatSocketHandler(tornado.websocket.WebSocketHandler):
    
        def get_compression_options(self):
            # Non-None enables compression with default options.
            return {'compression_level':5,'mem_level':5}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多