内容简介:纯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
- 聊天机器人
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 分布式系统中的通讯模型
- 飞享 web 端功能更新,全开源即时通讯系统
- Swoole跟thinkphp5结合开发WebSocket在线聊天通讯系统教程
- universe_push web 端 1.0.5 发布,全开源即时通讯系统
- 中国移动联合中兴通讯完成业界首个NFV架构下CloudOS与商用SDN系统解耦验证测试
- 分布式锁原理——redis分布式锁,zookeeper分布式锁
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS与DHTML精髓(第2版)
Dan Livingston / 清华大学 / 2003-7-1 / 34.00
CSS与DHTML精髓(第二版),ISBN:9787302066941,作者:战晓苏译;战晓苏译一起来看看 《CSS与DHTML精髓(第2版)》 这本书的介绍吧!