支持分布式的 go 实现即时通讯系统
↓推荐关注↓
【导读】本文介绍了一个 go 语言实现的简单 im 即时通信系统。
简介
纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 https://github.com/Terry-Ye/im_api , 学习于goim, 总分三层,
comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息 job(任务推送层)通过redsi 订阅发布功能进行推送到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 ./...
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模块
cd $GOPATH/src/im/comet
go install
cd ../logic/
go install
cd ../job
go install
nohup $GOPATH/bin/logic -d $GOPATH/src/im/logic/ 2>&1 > /data/log/im/logic.log &
nohup $GOPATH/bin/comet -d $GOPATH/src/im/comet/ 2>&1 > /data/log/im/comet.log &
nohup $GOPATH/bin/job -d $GOPATH/src/im/job/ 2>&1 > /data/log/im/job.log &
im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署
部署注意事项
部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)
demo
聊天室:http://www.texixi.com:1999/
使用的包
log: github.com/sirupsen/logrus rpc: github.com/smallnest/rpcx websocket: github.com/gorilla/websocket 配置文件:github.com/spf13/viper
后续计划
在线列表 支持wss 聊天机器人
转自:www.ancii.com/awugjp68e/
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平复信青年汉学家 7903999
- 2 高市早苗叫嚣出兵台海 网友反应亮了 7808929
- 3 中国最大城市群正在拼命建机场 7712984
- 4 从赛事“小联通”看湾区“大联通” 7617424
- 5 神二十飞船玻璃细微裂纹 将留轨试验 7522641
- 6 荒野求生“冷美人”退赛 7424574
- 7 编造散布公共领域谣言 网警从严查处 7329755
- 8 上海通报学校午餐发臭事件 7235233
- 9 神二十乘组乘神二十一号飞船回家 7141945
- 10 中国军号发布日语海报警告日方 7047381







程序员的那些事
