高仿版微信!一套强大的开源即时通讯工具
简介项目结构消息推送方案界面截图私聊群聊群通话好友列表群列表移动端APP
开源地址
简介
子IM是一个仿微信的聊天工具。后端采用springboot+netty实现,web端使用vue,移动端使用uniapp,支持私聊、群聊、离线消息、发送图片、文件、语音、emoji表情、视频聊天等功能。
项目结构
模块功能im-platform业务平台服务,负责处理来自用户的业务请求(http)im-server消息推送服务,不依赖业务,负责将消息推送给用户(ws)im-client消息推送sdk,其他服务可集成此sdk与im-server通信im-common公共包,后端服务均依赖此包im-webweb页面im-uniappuniapp页面,可打包成app、h5、微信小程序
消息推送方案
当消息的发送者和接收者连的不是同一个server时,消息是无法直接推送的,所以我们需要设计出能够支持跨节点推送的方案
利用了redis的list数据实现消息推送,其中key为im:unread:${serverid},每个key的数据可以看做一个queue,每个im-server根据自身的id只消费属于自己的queue
redis记录了每个用户的websocket连接的是哪个im-server,当用户发送消息时,im-platform将根据所连接的im-server的id,决定将消息推向哪个queue
界面截图
私聊
群聊
群通话
好友列表
群列表
移动端APP
开源地址
https://gitee.com/bluexsx/box-im