? ? ? ? 目前公司業(yè)務(wù)上,有課程直播這一塊。為了增加用戶的互動,需要增加聊天室功能。聊天室,對實時性有較嚴格的要求,所以考慮使用socketio來做。目前在服務(wù)端,有基于netty實現(xiàn)的websocketio的框架。https://github.com/mrniko/netty-socketio,這個作者還是挺厲害的(redisson的作者)。
? ? ? ?一般的聊天室架構(gòu)圖是這樣的:
服務(wù)端準備:
1 聊天室的創(chuàng)建,銷毀
當老師有直播請求的時候,同時,需要通知后臺服務(wù)創(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)提供了相應(yīng)的接口集成,支持redisson,hazelcast.