goch是一个用 Go 编写的自托管实时聊天服务器。
它允许您在自己的基础设施上运行实时聊天软件。
您可以创建多个私人和公共聊天室,其中两个或多个用户可以同时使用。
对于通信,它使用 RESTful 端点、Websockets、NATS Streaming 和 Redis。
goch是 Gossip 的一个分支,添加了许多功能和修复。
要在本地运行goch ,您需要在您的路径上安装并设置docker
、 docker-compose
和go
。下载/克隆项目后,运行./up
编译二进制文件并使用goch 、 NATS Streaming 和 Redis 运行 docker-compose 。如果没有错误, goch应该在本地主机(端口 8080)上运行。
为了使服务器运行,必须设置ADMIN_USERNAME
和ADMIN_PASSWORD
环境变量。在存储库中,它们分别设置为admin
和pass
,但出于安全原因,您显然应该更改它们。
服务器运行后,以下路由可用:
POST /admin/channels
:创建一个新频道。您必须为通道提供唯一的名称(通常是 ID),并且响应包含通道的秘密,该秘密将用于稍后连接到通道。应使用提供的管理凭据在服务器端调用此端点。应保存响应以便稍后连接到通道。
POST /register
:在频道中注册用户。为了注册频道,需要提供 UID、DisplayName、ChannelSecret 和 ChannelName。 (可选)需要提供用户秘密,但如果没有,服务器将生成并返回一个。
GET /connect
:连接到聊天并返回 WebSocket 连接以及聊天历史记录。需要提供 Channel、UID 和 Secret。可选地提供 LastSeq,它仅在 LastSeq(UNIX 时间戳)之后返回聊天历史记录。
其余路线仅用作“助手”:
GET /channels/{name}?secret=$SECRET
:返回频道中的成员列表。通道名称必须作为 URL 参数提供,通道秘密作为查询参数提供。
GET /admin/channels
:返回所有可用频道的列表。
GET /admin/channels/{name}/user/{uid}
:返回用户聊天中未读消息的列表。
goch已获得 MIT 许可。检查 LICENSE 文件以了解详细信息。
埃米尔·里比奇