Awesome
悟空IM(让信息传递更简单)
9年积累,沉淀出来的高性能通用通讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景。
本项目需要在go1.20.0或以上环境编译
分布式IM重要特性: 故障自动转移,去中心化设计,节点之间数据互备,支持集群快速自动扩容,代理节点机制
<p align="center"> <img align="left" height="110" src="./docs/logo.png"> <ul> <!-- <li><strong>QQ群</strong>: <a href="#">750224611</a></li> --> <!-- <li><strong>微信</strong>: <a href="#">wukongimgo(备注进群)</a></li> --> <li><strong>官网</strong>: https://githubim.com</li> <li><strong>通讯协议</strong>: <a href="https://githubim.com/server/advance/proto.html">WuKongIM协议</a></li> <li><strong>提问</strong>: https://github.com/WuKongIM/WuKongIM/issues</li> <li><strong>文档</strong>: https://githubim.com</li> </ul> </p><a href="https://join.slack.com/t/wukongim/shared_invite/zt-22o7we8on-2iKNUmgigB9ERdF9XUivmw"><img src="https://img.shields.io/badge/Slack-99%2B-blueviolet?logo=slack&logoColor=white"></a>
架构图
演示
聊天Demo
web聊天场景演示: http://imdemo.githubim.com
后端监控演示: http://monitor.githubim.com/web
<!-- 愿景 -------- 深知开发一个即时通讯系统的复杂性,我们希望通过开源的方式,让更多的开发者可以快速的搭建自己的即时通讯系统,让信息传递更简单。 -->特点
🎦独特性
群成员无上限,轻松支持10万人群聊,消息可永久存储。
📚资源消耗低
自研二进制协议,心跳包只有1字节,省流量,省电量,传输更迅速。
🔐安全性
消息通道和消息内容全程加密,防中间人攻击和窜改消息内容,服务端数据实时备份,数据不丢失。
🚀 性能
基于pebble kv数据库,研发了针对于IM这种服务的特有分布式数据库,省了其他数据库为了通用性而带来的性能损耗, 因为存储快,所以消息快。
🔥高可用
通过魔改raft分布式协议,实现了自动容灾,一台机器宕机,另一台机器自动接管,对外无感知。
去中心化,无单点,无中心节点,每个节点都是独立且平等的,都可以提供服务。
扩容方便,只需增加机器,不需要停机,不需要迁移数据,自动按策略分配数据。
0⃣️ 易用性
不依赖任何第三方中间件,部署简单,一条命令即可启动。
采用频道订阅发布的设计理念,容易理解,容易上手。
与Redis一样简单,Kafka一样高性能,MySQL一样可靠
🌲技术支持
官方团队提供技术支持,提供技术文档,提供技术交流群,提供issue反馈。
功能特性
- 支持自定义消息
- 支持订阅/发布者模式
- 支持个人/群聊/客服/社区资讯频道
- 支持频道黑名单
- 支持频道白名单
- 支持消息永久漫游,换设备登录,消息不丢失
- 支持在线状态,支持同账号多设备同时在线
- 支持多设备消息实时同步
- 支持用户最近会话列表服务端维护
- 支持指令消息
- 支持离线指令接口
- 支持Webhook,轻松对接自己的业务系统
- 支持Datasource,无缝对接自己的业务系统数据源
- 支持Websocket连接
- 支持TLS 1.3
- 支持Prometheus监控
- 监控系统开发
- 支持Windows系统(仅开发用)
- 支持流式消息,类似chatgpt的结果输出流
- 支持分布式
- 去中心化设计,任意一个节点宕机,集群自动修复
- 集群节点之间数据互备,任意一个节点损害,不影响数据完整性
- 支持集群快速自动扩容
快速部署体验
git clone https://github.com/WuKongIM/WuKongIM.git
cd WuKongIM/docker/cluster
sudo docker compose up -d
后台管理系统: http://127.0.0.1:15300/web
聊天演示地址:http://127.0.0.1:15172/login
源码开发
单机
go run main.go
(或 go run main.go --config config/wk.yaml)
分布式
# 启动第一个节点
go run main.go --config ./exampleconfig/cluster1.yaml
# 启动第二个节点
go run main.go --config ./exampleconfig/cluster2.yaml
# 启动第三个节点
go run main.go --config ./exampleconfig/cluster3.yaml
访问
后台管理系统: http://127.0.0.1:5300/web
聊天演示地址:http://127.0.0.1:5172/chatdemo
正式部署
请参考部署文档
配套SDK源码和Demo
项目名 | Github地址 | Example | 文档 | 说明 |
---|---|---|---|---|
WuKongIM | Github | 无 | 文档 | 悟空IM通讯端,负责长连接维护,消息投递等等 |
WuKongIMAndroidSDK | Github | Example | 文档 | 悟空IM的Android SDK |
WuKongIMiOSSDK | Github | Example | 文档 | 悟空IM的iOS SDK |
WuKongIMUniappSDK | Github | Example | 文档 | 悟空IM的 Uniapp SDK |
WuKongIMJSSDK | Github | Example | 文档 | 悟空IM的 JS SDK |
WuKongIMFlutterSDK | Github | Example | 文档 | 悟空IM的 Flutter SDK |
WuKongIMReactNativeDemo | Github | 无 | 无 | 悟空IM的 React Native Demo(由贡献者 wengqianshan 提供) |
WuKongIMHarmonyOSSDK | Github | Example | 文档 | WuKongIM的纯血鸿蒙OS SDK |
节点故障转移演示
后台截图
Star
我们团队一直致力于即时通讯的研发,需要您的鼓励,如果您觉得本项目对您有帮助,欢迎点个star,您的支持是我们最大的动力。
案例展示
项目名
TangSengDaoDao
开源地址
https://github.com/TangSengDaoDao/TangSengDaoDaoServer
截图
如果有需要,加我拉你进群,微信号:wukongimgo
License
WuKongIM is licensed under the Apache License 2.0.