Repolode
lxzan

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. 1

    使用 Go 安装该库

    go get -v github.com/lxzan/gws@latest
  2. 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 数据每日更新。

相关项目