All Projects → Terry-Ye → Im

Terry-Ye / Im

纯go实现的分布式im即时通讯系统,各层可单独部署,之间通过rpc通讯

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to Im

fire-im
分布式IM服务,参考https://github.com/crossoverJie/cim 实现
Stars: ✭ 17 (-95.93%)
Mutual labels:  im
Starrtc Android Demo
🚀starRTC,即时通讯(IM)系统,免费IM系统(含单聊,群聊,聊天室,文件传输),免费一对一视频聊天,VOIP,语音对讲(回音消除),直播连麦,视频直播,RTSP拉流,RTMP推流,webRTC服务端,在线教育,白板,小班课,在线会议,视频会议,视频监控,局域网直连(无需服务器),兼容webRTC, 支持webRTC加速,P2P高清传输,安卓、iOS、web互通,支持门禁对讲,可视对讲,电视盒子,树莓派,海思,全志,任天堂switch,云游戏,OTT设备,物联网平台,C语言自研方案,支持二次开发成类微信,类映客等APP,✨万水千山总是情,来个star行不行✨,更多示例请访问:
Stars: ✭ 3,038 (+626.79%)
Mutual labels:  im
Mpush
MPush开源实时消息推送系统
Stars: ✭ 3,455 (+726.56%)
Mutual labels:  im
ios
Connect IM iOS Project
Stars: ✭ 13 (-96.89%)
Mutual labels:  im
im js
im js sdk
Stars: ✭ 47 (-88.76%)
Mutual labels:  im
Candy
新一代IM
Stars: ✭ 289 (-30.86%)
Mutual labels:  im
onchat-web
A simple, beautiful, mobile-first instant messaging progressive web application.
Stars: ✭ 138 (-66.99%)
Mutual labels:  im
Im
仿QQ即时通讯系统服务端
Stars: ✭ 369 (-11.72%)
Mutual labels:  im
BBBUG Frontend
一个支持多房间的点歌听歌聊天室PC网站,实现了类KTV的点歌、顶歌、切歌,也可以自己听自己的歌,做一个自己的音乐播放器。
Stars: ✭ 114 (-72.73%)
Mutual labels:  im
React Native Chat Demo
网易云信IM示例
Stars: ✭ 325 (-22.25%)
Mutual labels:  im
electronim
Electron based multi IM (Instant Messaging) client
Stars: ✭ 50 (-88.04%)
Mutual labels:  im
vscode-qq
基于安卓QQ协议的vscode-qq扩展
Stars: ✭ 588 (+40.67%)
Mutual labels:  im
Im Select
Switch your input method through terminal 📟
Stars: ✭ 288 (-31.1%)
Mutual labels:  im
CimIM
IM即时通信Android客户端
Stars: ✭ 14 (-96.65%)
Mutual labels:  im
Mobileimsdk
一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
Stars: ✭ 3,864 (+824.4%)
Mutual labels:  im
gmqtt
Golang MQTT Broker.
Stars: ✭ 75 (-82.06%)
Mutual labels:  im
Hrlchatui
android自定义聊天界面 支持语音 图片 视频 文件布局的显示
Stars: ✭ 273 (-34.69%)
Mutual labels:  im
Rabbitim
玉兔即时通讯。开源的跨平台的的即时通信系统。包括文本、音视频、白板、远程控制
Stars: ✭ 386 (-7.66%)
Mutual labels:  im
Pc Chat
Open source IM solution.
Stars: ✭ 362 (-13.4%)
Mutual labels:  im
Oim Fx
OIM是采用 Java平台开发的一套即时通讯聊天系统,献给对即时通讯有兴趣的朋友。服务端实现了TCP Socket和WebSocket。方便接入网页版、安卓、IOS、PC桌面版客户端。OIM已经实现桌面版客户端,可以跨平台Windows、mac、Linux使用,用于公司内网、外网通讯、客服系统等,聊天系统。OIM项目可用于任何商业、个人作品中并且希望能够保留作者信息。如果OIM能够帮助到您,请点赞好评,加个星
Stars: ✭ 324 (-22.49%)
Mutual labels:  im

简介

纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 另使用于zookeeper,扩展性会大大增强, 总分三层

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

架构图

image

时序图

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

特性

  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 ./...
# 需要使用zookeeper服务 文档最底有安装启动方法
go get -u -v -tags "zookeeper" github.com/smallnest/rpcx/...



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模块
# 注意:第一次需要先启动logic ,因为要注册 服务端的zookeeper, 不然先启动comet会报错,第二次则不需要
cd ../logic/
mv logic.toml.example logic.toml
go install -tags zookeeper   # 或 go run  -tags zookeeper *.go
$GOPATH/bin/logic d $GOPATH/src/im/logic/
# nohup $GOPATH/bin/logic d $GOPATH/src/im/logic/ 2>&1 > /data/log/im/logic.log &

cd $GOPATH/src/im/comet
mv comet.toml.example comet.toml
go install -tags zookeeper  # 或 go run  -tags zookeeper *.go
# 启动
$GOPATH/bin/comet d $GOPATH/src/im/comet/
# nohup $GOPATH/bin/comet d $GOPATH/src/im/comet/ 2>&1 > /data/log/im/comet.log &


cd ../job
mv job.toml.example job.toml
go install # 或 go run *.go
$GOPATH/bin/job d $GOPATH/src/im/job/
# nohup $GOPATH/bin/job d $GOPATH/src/im/job/ 2>&1 > /data/log/im/job.log &



// demo页面执行
cd $GOPATH/src/im/demo
go run main.go

  1. im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署

部署注意事项

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

demo

聊天室:https://www.texixi.com:1999/

使用的包

  • log: github.com/sirupsen/logrus
  • rpc: github.com/smallnest/rpcx
  • websocket: github.com/gorilla/websocket
  • 配置文件:github.com/spf13/viper

zookeeper 安装

    wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
    tar -zxvf zookeeper-3.4.12.tar.gz
    cd zookeeper-3.4.12/conf/
    mv zoo_sample.cfg zoo.cfg //更改默认配置文件名称
    vi zoo.cfg //编辑配置文件,自定义dataDir
    cd ../bin
    ./zkServer.sh start //启动

后续计划

  1. 监控
  2. 聊天机器人
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].