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