Terry-Ye / Im
纯go实现的分布式im即时通讯系统,各层可单独部署,之间通过rpc通讯
Stars: ✭ 418
Programming Languages
go
31211 projects - #10 most used programming language
Labels
Projects that are alternatives of or similar to Im
Starrtc Android Demo
🚀starRTC,即时通讯(IM)系统,免费IM系统(含单聊,群聊,聊天室,文件传输),免费一对一视频聊天,VOIP,语音对讲(回音消除),直播连麦,视频直播,RTSP拉流,RTMP推流,webRTC服务端,在线教育,白板,小班课,在线会议,视频会议,视频监控,局域网直连(无需服务器),兼容webRTC, 支持webRTC加速,P2P高清传输,安卓、iOS、web互通,支持门禁对讲,可视对讲,电视盒子,树莓派,海思,全志,任天堂switch,云游戏,OTT设备,物联网平台,C语言自研方案,支持二次开发成类微信,类映客等APP,✨万水千山总是情,来个star行不行✨,更多示例请访问:
Stars: ✭ 3,038 (+626.79%)
Mutual labels: im
onchat-web
A simple, beautiful, mobile-first instant messaging progressive web application.
Stars: ✭ 138 (-66.99%)
Mutual labels: im
BBBUG Frontend
一个支持多房间的点歌听歌聊天室PC网站,实现了类KTV的点歌、顶歌、切歌,也可以自己听自己的歌,做一个自己的音乐播放器。
Stars: ✭ 114 (-72.73%)
Mutual labels: im
Mobileimsdk
一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
Stars: ✭ 3,864 (+824.4%)
Mutual labels: im
Oim Fx
OIM是采用 Java平台开发的一套即时通讯聊天系统,献给对即时通讯有兴趣的朋友。服务端实现了TCP Socket和WebSocket。方便接入网页版、安卓、IOS、PC桌面版客户端。OIM已经实现桌面版客户端,可以跨平台Windows、mac、Linux使用,用于公司内网、外网通讯、客服系统等,聊天系统。OIM项目可用于任何商业、个人作品中并且希望能够保留作者信息。如果OIM能够帮助到您,请点赞好评,加个星
Stars: ✭ 324 (-22.49%)
Mutual labels: im
简介
纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 另使用于zookeeper,扩展性会大大增强, 总分三层
- comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml
- logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息
- job(任务推送层)通过redis 订阅发布功能进行推送到comet层。
架构图
时序图
以下Comet 层,Logic 层,Job层都可以灵活扩展机器
特性
- 分布式,可拓扑的架构
- 支持单个,房间推送
- 心跳支持(gorilla/websocket内置)
- 基于redis 做消息推送
- 轻量级
- 持续迭代...
部署
- 安装
go get -u github.com/Terry-Ye/im
mv $GOPATH/src/github.com/Terry-Ye/im $GOPATH/src/im
cd $GOPATH/src/im
go get ./...
# 需要使用zookeeper服务 文档最底有安装启动方法
go get -u -v -tags "zookeeper" github.com/smallnest/rpcx/...
golang.org 包拉不下来的情况,例
package golang.org/x/net/ipv4: unrecognized import path "golang.org/x/net/ipv4" (https fetch: Get https://golang.org/x/net/ipv4?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
从github 拉下来,再移动位置
git clone https://github.com/golang/net.git
mkdir -p golang.org/x/
mv net $GOPATH/src/golang.org/x/
- 部署im 安装comet、logic、job模块
# 注意:第一次需要先启动logic ,因为要注册 服务端的zookeeper, 不然先启动comet会报错,第二次则不需要
cd ../logic/
mv logic.toml.example logic.toml
go install -tags zookeeper # 或 go run -tags zookeeper *.go
$GOPATH/bin/logic d $GOPATH/src/im/logic/
# nohup $GOPATH/bin/logic d $GOPATH/src/im/logic/ 2>&1 > /data/log/im/logic.log &
cd $GOPATH/src/im/comet
mv comet.toml.example comet.toml
go install -tags zookeeper # 或 go run -tags zookeeper *.go
# 启动
$GOPATH/bin/comet d $GOPATH/src/im/comet/
# nohup $GOPATH/bin/comet d $GOPATH/src/im/comet/ 2>&1 > /data/log/im/comet.log &
cd ../job
mv job.toml.example job.toml
go install # 或 go run *.go
$GOPATH/bin/job d $GOPATH/src/im/job/
# nohup $GOPATH/bin/job d $GOPATH/src/im/job/ 2>&1 > /data/log/im/job.log &
// demo页面执行
cd $GOPATH/src/im/demo
go run main.go
- im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署
部署注意事项
- 部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)
demo
聊天室:https://www.texixi.com:1999/
使用的包
- log: github.com/sirupsen/logrus
- rpc: github.com/smallnest/rpcx
- websocket: github.com/gorilla/websocket
- 配置文件:github.com/spf13/viper
zookeeper 安装
wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
tar -zxvf zookeeper-3.4.12.tar.gz
cd zookeeper-3.4.12/conf/
mv zoo_sample.cfg zoo.cfg //更改默认配置文件名称
vi zoo.cfg //编辑配置文件,自定义dataDir
cd ../bin
./zkServer.sh start //启动
后续计划
- 监控
- 聊天机器人
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].