目前公司業(yè)務上,有課程直播這一塊。為了增加用戶的互動,需要增加聊天室功能。聊天室,對實時性有較嚴格的要求,所以考慮使用socketio來做。目前在服務端,有基于netty實現(xiàn)的websocketio的框架。https://github.com/mrniko/netty-socketio,這個作者還是挺厲害的(redisson的作者)。
一般的聊天室架構(gòu)圖是這樣的:

服務端準備:
1 聊天室的創(chuàng)建,銷毀
當老師有直播請求的時候,同時,需要通知后臺服務創(chuàng)建一個聊天室的監(jiān)聽廣播。

當直播結(jié)束,通知后臺關(guān)閉聊天室

2 用戶信息發(fā)送的廣播
監(jiān)聽用戶發(fā)送message的事件,廣播消息。

客戶端準備:
1 socketio請求發(fā)送事件包socket.io.js
2DEMO頁面準備
1 初始化聊天室

2監(jiān)聽創(chuàng)建事件

3 發(fā)送創(chuàng)建事件

4 創(chuàng)建一個名稱為chat2的聊天室

5 初始化創(chuàng)建好的聊天室

6 監(jiān)聽聊天事件

7 發(fā)送聊天信息事件

8開始聊天

這樣,一個簡陋的聊天室就成形了,接下來還要考慮聊天消息的分布式存儲。好消息是,他已經(jīng)提供了相應的接口集成,支持redisson,hazelcast.
我的微信公眾號,歡迎溝通學習。
