我正在開發一個聊天應用程序,並使用socket.io
/node
。基本上我想出了以下策略:在客戶端之間發送消息socket.io
- 發送來自客戶端的消息,然後由套接字服務器接收,然後發送給接收客戶端。在後臺上,如果用戶希望看到他以前的對話,則將它存儲到數據庫中的消息中以供稍後檢索。
這種方法的優點是,用戶獲取信息幾乎是瞬間,因爲我們不能等待做數據庫操作完成,但CON是,如果DB操作失敗,正是客戶端刷新其頁面以獲取消息時,它不會得到該消息。
- 從客戶端發送消息到服務器,然後服務器將其存儲在數據庫中,然後只發送給接收客戶端。
的利弊的是,我們要確保這條消息將接收到只有在其存儲在數據庫客戶端。 con是它將無法接近實時,因爲我們將在減緩消息傳遞之間進行數據庫操作。
- 向客戶端發送消息,然後將消息存儲在緩存層(例如redis)中,然後立即將其發送給接收客戶端。在後臺保持從redis獲取記錄並更新數據庫。如果客戶端刷新頁面,我們首先查看數據庫,然後查看redis層。
專業人員是我們使通信更快,並確保消息按需呈現正確。與上述實現相比,這是相當複雜的,我想知道是否有更簡單的方法來實現這一點?
我的問題是,如果你正在構建一個嚴格的聊天應用程序,確保兩者 - 更快的通信和數據持久性是什麼方式。像facebook,whatsapp等應用程序一樣的應用程序有什麼策略?我並不是在尋找確切的例子,但幾點提示會有所幫助。
謝謝。