一、WebSocket怎么實現(xiàn)數(shù)據(jù)庫表增加一條數(shù)據(jù)然后主動推送給客戶端
websocket是一個全雙工通信協(xié)議,所以只要客戶端和服務端實現(xiàn)了相關邏輯就好了。
現(xiàn)在大部分瀏覽器都支持websocket協(xié)議,寫起來也很簡單,用一些現(xiàn)成的js庫也可以。
服務器端寫起來也不算麻煩。
檢測到數(shù)據(jù)庫變更就推送一條消息即可。
另一個問題是如何檢測到mysql數(shù)據(jù)庫的變更。
我覺得大概有這樣幾種思路:
代碼實現(xiàn),有修改數(shù)據(jù)庫操作的地方,增加一些推送消息的邏輯;加入攔截器,進行切面處理,避免第1種到處加入代碼;使用中間件,如canal,實時監(jiān)聽數(shù)據(jù)庫的修改。延伸閱讀:
二、數(shù)據(jù)實時推送的實現(xiàn)方式和應用場景
1.輪詢:
客戶端通過代碼定時向服務器發(fā)送AJAX請求,服務器接收請求并返回響應信息。
優(yōu)點:代碼相對簡單,適用于小型應用。
缺點:在服務器數(shù)據(jù)沒有更新時,會造成請求重復數(shù)據(jù),請求無用,浪費帶寬和服務器資源。
2.長連接:
在頁面中嵌入一個隱藏的iframe,將這個隱藏的iframe的屬性設置為一個長連接的請求或者xrh請求,服務器通過這種方式往客戶端輸入數(shù)據(jù)。
優(yōu)點:數(shù)據(jù)實時刷新,請求不會浪費,管理較簡潔。
缺點:長時間維護保持一個長連接會增加服務器開銷。
3.webSocket:
websocket是HTML5開始提供的一種客戶端與服務器之間進行通訊的網(wǎng)絡技術,通過這種方式可以實現(xiàn)客戶端和服務器的長連接,雙向?qū)崟r通訊。
優(yōu)點:減少資源消耗;實時推送不用等待客戶端的請求;減少通信量;
缺點:少部分瀏覽器不支持,不同瀏覽器支持的程度和方式都不同。?
應用場景:聊天室、智慧大屏、消息提醒、股票k線圖監(jiān)控等。