實現數據庫更新時前端頁面實時刷新

https://blog.csdn.net/fengguangle/article/details/78019880前端

問:

難道只能設置定時器每隔一秒經過 Ajax 向後臺請求數據來實現嗎?

答:

一、
nodejs的 http://socket.io 支持上述 李宏訓 所說的三種方式,另外還支持 Flash Socket、隱藏IFrame、JSONP Polling等方式。http://Socket.io提供前端和服務器端的配套機制,併兼容各類瀏覽器,它的前端js模塊會判斷瀏覽器的能力,自適應選擇最合適的Comet方式。
 
二、
我知道有三種方式: 1,ajax短鏈接:客戶端每隔一秒鐘發一次請求,服務器收到請求後會馬上返回結果,無論有沒有新數據。 2,ajax長鏈接:客戶端發送一次請求,服務器端收到請求後查詢有沒有新數據,若是沒有新數據就阻塞這個請求,直到有新數據或者超時爲止。客戶端每次收到請求返回結果後馬上再發一次請求。comet貌似就是這個原理。 3,WebSocket:這就不是一個HTTP協議了,而是一個tcp協議,並且Socket這個玩意顧名思義就是一個流了,能夠雙向操做。缺點是有些瀏覽器不支持。
對比延遲: 假設網絡延遲是m毫秒,那麼ajax短鏈接的延遲在m到1000毫秒之間,另外兩種基本只有m毫秒的延遲。 對比資源佔用: 應該是1>2>3。可是1和2的比較要看狀況,若是兩次請求間隔時間很長的話應該是2>1>3。
 
三、
用comet,其實也是ajax 了。 只是前端發送一個請求後,服務端保持這個請求。有數據就事實返回。沒數據就一直保持這個鏈接。你會說若是鏈接斷了、超時呢,斷了就再發起。
————————————————
版權聲明:本文爲CSDN博主「fengguangle」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/fengguangle/article/details/78019880node