Repolode
LockGit

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

    克隆代码仓库

    git clone git@github.com:LockGit/gochat.git
  2. 2

    使用 Docker 和脚本以本地地址启动演示

    cd gochat && sh run.sh dev 127.0.0.1
  3. 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 数据每日更新。

相关项目