鍍金池/ 問答/HTML/ websocket做的聊天室,本地消息記錄的緩存該如何實(shí)現(xiàn)呢

websocket做的聊天室,本地消息記錄的緩存該如何實(shí)現(xiàn)呢

vue+websocket+oss做的一個(gè)聊天室
要求緩存消息記錄
程序有個(gè)消息對象msgArr = []
1:是每次退出程序的時(shí)候?qū)sgArr轉(zhuǎn)存入localStage還是每次一來消息就存一遍localStage呢
2:如果是圖片或者音頻視頻,該如何存入這個(gè)localStage呢,因?yàn)閘ocalStage的存儲(chǔ)空間有限。

回答
編輯回答
朕略萌

indexedDB

不知道題主關(guān)注過這個(gè)沒有
可以去看下,嘗試使用

回到問題本身,不清楚應(yīng)用場景。
假設(shè)基于瀏覽器,想存儲(chǔ)大量數(shù)據(jù)本身就是偽命題。
那么如果不是,后端生成聊天記錄文件豈不是更好

補(bǔ)充:我自己練手的聊天室用的localStage

2017年4月10日 02:43
編輯回答
冷溫柔

可以參考其他的即時(shí)通訊軟件(QQ、微信、等等),聊天內(nèi)容緩存在客戶端必然會(huì)隨著時(shí)間的增長而變得非常大。所以應(yīng)該考慮緩存在用戶本地磁盤內(nèi)。但是如果是瀏覽器只能通過 localstorage 或者其他瀏覽器提供的方式。但是其實(shí)并不適合。

2017年7月2日 06:57
編輯回答
兔囡囡

聊天記錄應(yīng)該以日志的形式進(jìn)行緩存,也就是每到一條記錄都應(yīng)該同步到緩存中去,具體的實(shí)施方式可以在前端寫一個(gè)中間件,拿到消息后先入日志,往下進(jìn)入應(yīng)用,這樣在記錄丟失的時(shí)候也好定位是socket通信出問題了還是渲染出了問題。

若是退出時(shí)才進(jìn)行緩存,一些丟包現(xiàn)象則很難定位錯(cuò)誤節(jié)點(diǎn)。

至于圖片和音頻,如果一定要在前端存儲(chǔ),那么嘗試 indexDB 是一個(gè)合適一些的選擇。不過私以為對于體量大的文件在拿到消息以后的清洗階段(把取到的數(shù)據(jù)格式化一下是個(gè)好習(xí)慣,當(dāng)然極簡的返回?cái)?shù)據(jù)可能不需要)可以打上標(biāo)記,然后讀取該條緩存的時(shí)候數(shù)據(jù)從服務(wù)器上拿。

2018年9月19日 04:26