700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 纯golang im即时通讯系统(支持分布式)

纯golang im即时通讯系统(支持分布式)

时间:2022-07-02 07:44:18

相关推荐

纯golang im即时通讯系统(支持分布式)

简介

纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 /Terry-Ye/im, 学习于goim, 总分三层,

comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.tomllogic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。

架构图

时序图

以下Comet 层,Logic 层,Job层都可以灵活扩展机器

特性

分布式,可拓扑的架构支持单个,房间推送心跳支持(gorilla/websocket内置)基于redis 做消息推送轻量级持续迭代…

部署

安装

go get -u /Terry-Ye/immv $GOPATH/src//Terry-Ye/im $GOPATH/src/imcd $GOPATH/src/imgo get ./...

包拉不下来的情况,例

package /x/net/ipv4: unrecognized import path "/x/net/ipv4" (https fetch: Get /x/net/ipv4?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

从github 拉下来,再移动位置

git clone /golang/net.gitmkdir -p /x/mv net $GOPATH/src//x/

部署im

安装comet、logic、job模块

cd $GOPATH/src/im/cometgo installcd ../logic/go installcd ../jobgo installnohup $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

聊天室::1999/

使用的包

log: /sirupsen/logrusrpc: /smallnest/rpcxwebsocket: /gorilla/websocket配置文件:/spf13/viper

后续计划

在线列表支持wss聊天机器人

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。