在 v1.8.0-rc2
更新中, gws
实现了上下文接管和可配置的滑动窗口大小, 至此 WebSocket RFC 7692 全部特性都得到了实现.
连续发送相似内容的场景, 上下文接管可以带来非常高的压缩率, 以斗破苍穹电子书为例, 原文 14.93MB, 每次写入 4KB 直到 EOF:
context_take_over, window_bits=12, size=4.69MB
context_take_over, window_bits=15, size=0.27MB
no_context_take_over, window_bits=15, size=7.17MB
gws
和 gorilla
的差异对比:
Features | gorilla/websocket | lxzan/gws |
---|---|---|
RFC 6455 | 支持 | 支持 |
RFC 7692 | 部分支持, 不支持上下文接管和可配置的滑动窗口大小 | 全部支持 |
并发写 | 不支持 | 支持 |
异步写 | 不支持 | 支持 |
并行消息处理 | 不支持 | 支持 |
预备帧 | 支持 | 支持 |