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

栏目: Go · 发布时间: 7年前

内容简介:纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 总分三层,github地址以下Comet 层,Logic 层,Job层都可以灵活扩展机器

简介

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

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

时序图

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

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

特性

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

部署

  1. 安装
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/
  1. 部署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 &
  1. im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署

部署注意事项

  1. 部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)

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

后续计划

  1. 在线列表
  2. 支持wss
  3. 聊天机器人

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数学与生活(修订版)

数学与生活(修订版)

[日] 远山启 / 吕砚山、李诵雪、马杰、莫德举 / 人民邮电出版社 / 2014-10 / 42.00元

数学是高等智慧生物的共有思维,是对真理的探索,对矛盾的怀疑,但它绝非一门晦涩难懂的学问,非应试目的的数学是纯粹而朴实的智慧。《数学与生活》为日本数学教育改革之作,旨在还原被考试扭曲的数学,为读者呈现数学的真正容颜,消除应试教学模式带来的数学恐惧感。 本书既包含了初等数学的基础内容,又包含了微分、积分、微分方程、费马定理、欧拉公式等高等数学的内容。作者运用了多个学科的知识。结合日常生活和东西方......一起来看看 《数学与生活(修订版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器