{"repo":"LockGit/gochat","free":true,"listed":false,"github":"https://github.com/LockGit/gochat","clone":"git clone https://github.com/LockGit/gochat.git","description":"goim server write by golang !🚀","language":"Go","stars":2929,"topics":["im","goim","gochat","chat"],"license":"MIT","category":"chat-messaging","readme_excerpt":"🚀 gochat English version(英文版本) gochat是一个使用纯go实现的轻量级im系统 gochat为纯go实现的即时通讯系统,支持私信消息与房间广播消息,各层之间通过rpc通讯,支持水平扩展。 支持websocket,tcp接入,并且在最新的版本中已经支持websocket,tcp消息互通。 各层之间基于etcd服务发现,在扩容部署时将会方便很多。 使用redis作为消息存储与投递的载体,十分轻量,在实际场景中还可以替换为更重的类似kafka,rabbitMQ。 由于go的交叉编译特性,编译后可以快速在各个平台上运行,gochat架构及目录结构清晰。 本项目贴心的提供了docker一键构建所有环境依赖,安装起来十分便捷。(如果是体验，强烈建议使用docker构建) 更新 2022年08月06日 虽然UI在本系统中并不是很重要，但看着确实别扭，用TypeScript+React糊了一个稍微看上去正常一些的前端UI界面，UI项目地址：https://github.com/LockGit/gochat-ui 2022年05月08日 目前golang版本升级到了1.18，如果未使用docker，选择自己编译安装请确保自己的go版本是否符合要求 vendor也打包到了仓库里，加上vendor整个项目大小约66M，理论git clone后就就可以使用，由于不可抗拒的网络因素，可能需要较长时间 升级了一些包依赖版本，不建议在低版本的golang上尝试编译本项目，尽量升级到1.18+ 优化：watch etcd的中对应的kv变化，动态更新服务ip地址，确保新增/移除各层后其他层能够感知 2025年11月27日 支持各模块任意启动顺序 Websocket && Tcp消息互通 架构设计 服务发现 消息投递 时序图 聊天室预览 用TypeScript + React 糊了一个稍微看上去正常一些的前端UI，UI项目地址：https://github.com/LockGit/gochat-ui 用户长链接会话内部结构 划分bucket减小锁竞争 基于CityHash让hash分布的更均匀 链接层的单个server内部结构预览 简单压测 目录结构 相关组件 数据库及表结构 安装 使用docker一键启动 使用现有镜像 amd x86架构 构建新镜像 这里提供一个在线聊天demo站点： http://45.77.108.245:8080 如果想部署类似的私人im聊天服务到公网体验，也可在vultr上注册账号购买一个vps主机，部署im服务体验： https://www.vultr.com/?ref=8981750-8H 相关问题解答 后续 Backer and Sponsor jetbrains Support gochat License gochat is licensed under the MIT License. Star History","default_branch":null,"files":null,"tree":[],"storefront":"/r/LockGit","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/LockGit/gochat/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}