目前公司业务上,有课程直播这一块。为了增加用户的互动,需要增加聊天室功能。聊天室,对实时性有较严格的要求,所以考虑使用socketio来做。目前在服务端,有基于netty实现的websocketio的框架。https://github.com/mrniko/netty-socketio,这个作者还是挺厉害的(redisson的作者)。
一般的聊天室架构图是这样的:
![](https://img.haomeiwen.com/i1455720/3d0577dded6c041c.png)
服务端准备:
1 聊天室的创建,销毁
当老师有直播请求的时候,同时,需要通知后台服务创建一个聊天室的监听广播。
![](https://img.haomeiwen.com/i1455720/7f2a61dbfa9e4561.png)
当直播结束,通知后台关闭聊天室
![](https://img.haomeiwen.com/i1455720/3f4ab07a4e768103.png)
2 用户信息发送的广播
监听用户发送message的事件,广播消息。
![](https://img.haomeiwen.com/i1455720/170aa3a67566e4b0.png)
客户端准备:
1 socketio请求发送事件包socket.io.js
2DEMO页面准备
1 初始化聊天室
![](https://img.haomeiwen.com/i1455720/1d97579a5883d584.png)
2监听创建事件
![](https://img.haomeiwen.com/i1455720/01990b29f48cad43.png)
3 发送创建事件
![](https://img.haomeiwen.com/i1455720/a857d804a57508d6.png)
4 创建一个名称为chat2的聊天室
![](https://img.haomeiwen.com/i1455720/521bdf61e463af62.png)
5 初始化创建好的聊天室
![](https://img.haomeiwen.com/i1455720/d517b092cc2f8b5f.png)
6 监听聊天事件
![](https://img.haomeiwen.com/i1455720/3419ebe24bd0f4cf.png)
7 发送聊天信息事件
![](https://img.haomeiwen.com/i1455720/73c270d5eac9107a.png)
8开始聊天
![](https://img.haomeiwen.com/i1455720/39af47795ae01b9c.png)
这样,一个简陋的聊天室就成形了,接下来还要考虑聊天消息的分布式存储。好消息是,他已经提供了相应的接口集成,支持redisson,hazelcast.
网友评论