實現一個網頁版的聊天室(類似於釘釘群),請列出關鍵的技術方案及要點。需求如下:
- 高實時性、高性能
- 你發的每條消息可以看到有多少人已讀
- 當信息中含有“@某人”時,被@的人的界面上會顯示“有人@你”的提醒字樣
- 刷新頁面或斷網狀態下,歷史聊天記錄不會消失
答案與解析
- 運用socket通訊,
- 服務器向客戶端發送數據,
- 客戶端接收之后向服務端返回一個字段,代表已讀,
- 客戶端接收數據之后建立本地緩存(cookie或者sessionStrorage),
- @的狀態可以通過對特定ID發送數據時增加一個字段,在客戶端識別到該ID和本地ID相同時,顯示“有人@你”