内容简介:纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 总分三层,github地址以下Comet 层,Logic 层,Job层都可以灵活扩展机器
简介
纯 go 实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 总分三层,github地址 https://github.com/Terry-Ye/im
- 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
- 聊天机器人
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Everyone
Cay S. Horstmann、Rance D. Necaise / John Wiley & Sons / 2013-4-26 / GBP 181.99
Cay Horstmann's" Python for Everyone "provides readers with step-by-step guidance, a feature that is immensely helpful for building confidence and providing an outline for the task at hand. "Problem S......一起来看看 《Python for Everyone》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
XML 在线格式化
在线 XML 格式化压缩工具