go websocket server 测评

lxzan · · 1655 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

websocket package 那么多, 到底要怎么选? 今天为大家带来3款 go websocket 测评, 希望对您有些帮助. 测试代码仓库: [go-websocket-testing](https://github.com/lxzan/go-websocket-testing) . #### Packages - https://github.com/lxzan/gws - https://github.com/gorilla/websocket - https://github.com/nhooyr/websocket #### WebSocket 协议测试 (autobahn-testsuite) - 工具: `autobahn-testsuite` - 命令: ```bash docker run -it --rm \ -v ${PWD}/config:/config \ -v ${PWD}/reports:/reports \ crossbario/autobahn-testsuite \ wstest -m fuzzingclient -s /config/fuzzingclient.json ``` 每个包基本都是用的默认配置, 为了节省时间, 本项测试关闭了压缩. 可以看到, 尽管`gorilla/websocket` 和 `nhooyr/websocket`宣称通过了所有`autobahn-testsuite`测试, 但可能需要开发者额外写一些代码. - 结果 | package | Pass | Info | Non-Strict | Unclean | Failed | | ----------------- | ---- | ---- | ---------- | ------- | ------ | | lxzan/gws | 294 | 3 | 4 | 0 | 0 | | gorilla/websocket | 223 | 3 | 0 | 85 | 75 | | nhooyr/websocket | 173 | 3 | 0 | 0 | 125 | #### 延迟测试 对于一般的线上场景,它们性能都够用了,所以我只测试下延迟情况,感兴趣的朋友可以自己跑下其它负载下的压测 - 场景: 1000连接, 每秒发送100条1KiB的消息 - 工具: `tcpkali` - 命令: ```bash tcpkali -c 1000 --connect-rate 200 -r 100 -T 1200s -f assets/1K.txt --ws ip:port ``` - 结果 ![image.png](https://static.golangjob.cn/230216/f27f6f6a17278d3f31ccc30ce06c4754.png) ![image.png](https://static.golangjob.cn/230216/9b1b6b90f7a22891ad1cd2462acdd36c.png) ![image.png](https://static.golangjob.cn/230216/28ec436cead833d8f7d8d84462e48890.png)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1655 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传