在 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 | 部分支持, 不支持上下文接管和可配置的滑动窗口大小 | 全部支持 |
| 并发写 | 不支持 | 支持 |
| 异步写 | 不支持 | 支持 |
| 并行消息处理 | 不支持 | 支持 |
| 预备帧 | 支持 | 支持 |