一对一简单即时通讯业务
2021-04-05 21:45:42 1 举报
绘制了一个简单的一对一即时通讯流程图,主要使用Netty+WebSocket+RabbitMQ实现
作者其他创作
大纲/内容
3.向用户B发送消息
8.用户B登出,删除channel对象,同时从监听器中移除用户B的消息队列,可以使用beforeunload或unload
将队列从监听器中移除(用户已下线),同时重发这条信息到队列(尾部)中
6.判断用户Bchannel对象是否存在
1.连接websocket
6.监听器触发后去容器查找用户B的channel是否存在
RabbitMQ
用户B
2.监听器监听登录用户的消息queue
channel对象容器Redis/ConcurrentHashMap
requeue重发/其它处理
MySql/MongoDB
queue监听器
若用户B已经下线,则监听器不会监听用户B的队列
2.存储用户A&B的连接对象channel
Netty实现的WebSocket服务器
N
判断channel是否存在
4.同时存入数据库
5.监听器监听到用户B的queue中有消息
Y
大部分情况到这里都能找到用户B的channel对象,但是可能发生消息刚刚被监听到,用户B突然下线的情况
4.消息根据路由键进入用户B的消息queue
7.拉取历史聊天记录
用户A
是否发生异常
收藏
收藏
0 条评论
下一页