基于 Go 的开源即时通讯服务端,供开发者集成到自有应用中,提供 SDK、REST API 和 Webhook。
LockGit/gochat
一个用纯 Go 实现的轻量级即时通讯系统,支持私信与房间广播。
- Star
- 2,937
- Fork
- 475
- 未关闭 Issue
- 30
- 最近提交
- 2个月前
这是什么?
gochat 是一个用纯 Go 实现的即时通讯系统,支持私信和房间广播消息。各层之间通过 RPC 通信,可以按层水平扩展。
客户端可通过 WebSocket 或 TCP 接入,两种连接方式之间的消息可以互通。服务之间基于 etcd 做服务发现,消息队列与存储使用 Redis;演示环境的用户数据存放在 sqlite3 中,通过 GORM 访问,可替换为其他关系型数据库,队列也可换成 Kafka 或 RabbitMQ。
项目拆分为 api、connect、logic、task、site 等模块,每个模块可单独启动。仓库提供 Docker 配置和启动脚本,便于快速搭建带演示聊天室的环境。
核心功能
- 01支持私信与房间广播消息
- 02支持 WebSocket 与 TCP 接入,两种协议消息互通
- 03基于 etcd 的服务发现,层间通过 RPC 通信
- 04使用 Redis 作为消息队列,可替换为 Kafka 或 RabbitMQ
- 05提供 Docker 一键构建依赖环境与演示
适用场景
- 学习使用 Go 构建可水平扩展的聊天服务端架构
- 快速搭建内部聊天或消息功能原型
- 在此基础上叠加自有业务逻辑,定制即时通讯后端
快速上手
- 1
克隆代码仓库
git clone git@github.com:LockGit/gochat.git - 2
使用 Docker 和脚本以本地地址启动演示
cd gochat && sh run.sh dev 127.0.0.1 - 3
在浏览器中打开 http://127.0.0.1:8080 进入聊天室
使用前须知
- 不使用 Docker 时需要先部署 etcd 和 Redis,并按顺序手动启动各个模块。
- 消息不会存入数据库,只会经队列转发。
- README 指出在线演示站未开启 TCP 通道。
收录于专题
标签
常见问题
- gochat 是什么?
- 一个用纯 Go 实现的轻量级即时通讯系统,支持私信与房间广播。 gochat 是一个用纯 Go 实现的即时通讯系统,支持私信和房间广播消息。各层之间通过 RPC 通信,可以按层水平扩展。
- gochat 可以免费使用吗?用的什么许可证?
- gochat 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- gochat 还在维护吗?
- 半年内有更新。gochat 最近一次提交是在 2026年9月1日。
- gochat 适合用来做什么?
- 学习使用 Go 构建可水平扩展的聊天服务端架构 快速搭建内部聊天或消息功能原型 在此基础上叠加自有业务逻辑,定制即时通讯后端
- gochat 怎么安装和运行?
- 克隆代码仓库: git clone git@github.com:LockGit/gochat.git 使用 Docker 和脚本以本地地址启动演示: cd gochat && sh run.sh dev 127.0.0.1 在浏览器中打开 http://127.0.0.1:8080 进入聊天室
- 在哪里获取 gochat?
- 源代码和安装说明在 GitHub 上:https://github.com/LockGit/gochat
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.7万+12 本周2979GoApache-2.0更新于 前天
用 Go 编写的可自托管即时通讯服务端,配套 Android、iOS 与 Web 客户端,并提供 gRPC 接口。
1.4万+10 本周2092GoGPL-3.0更新于 13天前
OCTO 开源办公平台的 Go 后端,提供 REST 与 WebSocket 接口,并基于 WuKongIM 实现实时消息。
1108+7 本周175GoApache-2.0更新于 昨天
基于 Cloudflare 运行的自部署团队聊天系统,支持实时消息、Telegram 双向桥接和服务端加密。
1410+31 本周586JavaScriptGPL-3.0维护活跃更新于 前天
驱动 Stoat 聊天平台的 Rust 后端服务与库,包含 REST API、WebSocket 事件服务和文件服务。
3452+24 本周406RustOther维护活跃更新于 前天
基于 uWebSockets.js 的聊天服务器,提供区别于 XMPP 的消息协议方案,使用 Node.js、MongoDB 和 Redis。
16116JavaScriptGPL-3.0更新于 上个月