https://github.com/lxzan/gws
在 v1.8.0-rc2 更新中, gws 实现了上下文接管和可配置的滑动窗口大小, 至此 WebSocket RFC 7692 全部特性都得到了实现. 连续发送相似内容的场景, 上下文接管可以带来非常高的压缩率, 以斗破苍穹电子书为例, 原文 14.93MB, 每次写入 4KB 直到 EOF:
```
context_take_over, window_bits=12, size=7.35MB
context_take_over, window_bits=15, size=6.71MB
no_context_take_over, window_bits=15, size=8.91MB
```
gws 和 gorilla 的差异对比:
| Features | gorilla/websocket | lxzan/gws |
| ------------ | ------------------------------------------------ | --------- |
| RFC 6455 | 支持 | 支持 |
| RFC 7692 | 部分支持, 不支持上下文接管和可配置的滑动窗口大小 | 全部支持 |
| 并发写 | 不支持 | 支持 |
| 异步写 | 不支持 | 支持 |
| 并行消息处理 | 不支持 | 支持 |
| 预备帧 | 支持 | 支持 |
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)