一个命令行工具,可把任意读写 STDIN/STDOUT 的程序封装成 WebSocket 服务。
lxzan/gws
一个基于事件驱动的 Go WebSocket 服务端与客户端库,支持 TCP、KCP 与 Unix 域套接字。
- Star
- 1,808
- Fork
- 122
- 未关闭 Issue
- 0
- 最近提交
- 上个月
这是什么?
GWS(Go WebSocket)是一个用 Go 编写的 WebSocket 库,核心是一套简洁的事件接口,包括 OnOpen、OnMessage、OnClose、OnPing、OnPong 等回调。每个连接由独立的 goroutine 驱动事件循环,协议细节被隐藏,开发者可以专注于业务逻辑。
除基础 API 外,它提供 Broadcaster,可将消息压缩一次后广播给大量连接;支持带可配置滑动窗口的 permessage-deflate 上下文接管;并可通过自定义 Dialer 经 SOCKS5 或 HTTP 代理建立连接。它还支持在 KCP 和 Unix 域套接字上运行,提供非阻塞的异步写入、大文件分段写入,以及 ReadLoop、ReadMessage、NextReader 三种读取模式。
项目面向 RFC 6455 与 RFC 7692 标准,并称通过了 Autobahn 测试套件。它适用于需要维持大量长连接的服务,如网关、即时通讯、在线游戏和消息推送。
核心功能
- 01基于 OnOpen、OnMessage、OnClose、OnPing、OnPong 回调的事件驱动 API。
- 02Broadcaster 可将消息压缩一次后广播给多个连接。
- 03支持带上下文接管和可配置滑动窗口的 permessage-deflate。
- 04通过自定义 Dialer 经 SOCKS5 或 HTTP 代理建立连接。
- 05可运行在 TCP、KCP 和 Unix 域套接字之上。
- 06支持异步非阻塞写入和大文件分段写入。
适用场景
- 使用 Go 构建实时聊天或即时通讯后端。
- 搭建需要维持大量长连接的 API 网关或连接中心。
- 向浏览器或应用客户端推送实时更新或发布订阅消息。
- 开发需要经 SOCKS5 代理连接的 WebSocket 客户端。
快速上手
- 1
使用 Go 安装该库
go get -v github.com/lxzan/gws@latest - 2
创建包含快速开始代码的 main.go 并在 6666 端口运行服务器
使用前须知
- 需要 Go 1.18 或更高版本。
标签
常见问题
- gws 是什么?
- 一个基于事件驱动的 Go WebSocket 服务端与客户端库,支持 TCP、KCP 与 Unix 域套接字。 GWS(Go WebSocket)是一个用 Go 编写的 WebSocket 库,核心是一套简洁的事件接口,包括 OnOpen、OnMessage、OnClose、OnPing、OnPong 等回调。每个连接由独立的 goroutine 驱动事件循环,协议细节被隐藏,开发者可以专注于业务逻辑。
- gws 可以免费使用吗?用的什么许可证?
- gws 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- gws 还在维护吗?
- 半年内有更新。gws 最近一次提交是在 2026年9月11日。
- gws 适合用来做什么?
- 使用 Go 构建实时聊天或即时通讯后端。 搭建需要维持大量长连接的 API 网关或连接中心。 向浏览器或应用客户端推送实时更新或发布订阅消息。 开发需要经 SOCKS5 代理连接的 WebSocket 客户端。
- gws 怎么安装和运行?
- 使用 Go 安装该库: go get -v github.com/lxzan/gws@latest 创建包含快速开始代码的 main.go 并在 6666 端口运行服务器
- 在哪里获取 gws?
- 源代码和安装说明在 GitHub 上:https://github.com/lxzan/gws
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
命令行 WebSocket 客户端与服务端工具,可用于 ws:// 和 wss:// 连接,类似 netcat、curl 和 socat。
lichess.org 背后的 Scala 服务端,一个免费、无广告的开源在线国际象棋平台。
面向 Windows 的多网卡聚合与分流工具,可将有线、Wi-Fi、热点等连接同时用于下载。
为 PHP 提供事件驱动网络引擎与协程运行时的扩展,用于构建长驻的 TCP、UDP、HTTP 和 WebSocket 服务。
用 Swift 编写的跨平台非阻塞事件驱动网络框架,用于构建高性能协议服务端与客户端。