有哪些: 輪詢、長輪詢、iframe流、websocket前端
輪詢:http的請求有一個很明顯的缺點,就是隻能有客戶端發起,不能由服務端主動推送,因此輪詢就是定時向服務器發送請求,去獲取數據web
優勢:傳輸簡單,易操做服務器
缺點: 輪詢的時間過長致使數據傳輸不及時,輪詢時間太短致使請求過多,消耗流量和CPU利用率;websocket
舉例: 前端使用定時器向服務端發送請求,響應成功後將數據展示給用戶。網絡
原理圖:socket
長輪詢:長輪詢是對輪詢的一種改進,對於輪詢來講,每一次向服務端請求數據,不管服務端和有沒有給新數據,都先返回給客戶端,過一下子再來,而長輪詢就是,客戶端定時向服務端發送請求,若是發現有新數據,blog
就拿着數據回去而後開始新一輪請求,若是沒有新數據傳來,就一直等,知道等到響應週期結束,即請求超時,而後再進行新一輪的請求。小結:請求成功後發送新一輪請求,請求超時也發送新一輪請求。ip
優勢:改進了輪詢不斷髮送請求的資源浪費的缺點,相比於輪詢,具備更好的時效性。資源
缺點: 在服務端沒有給出新消息的時候,始終保持着鏈接,會一直消耗流量資源。iframe
原理圖:
iframe流:輪詢和長輪詢都是直接依靠JavaScript,不須要DOM配合就能夠完成一次請求,而iframe流跟他們不同,他的原理是在頁面上放一個隱藏的iframe元素,經過iframe的src屬性與服務器創建長鏈接,
服務器以此來向客戶端傳輸數據,以達到實時更新數據的目的。
優勢:實時通信效果較好
缺點:長時間與服務器進行鏈接,會很浪費網絡資源。
websocket: 基於http協議創建的,因此首次的聯繫創建者必須仍是客戶端,但在鏈接以後,不管是服務端仍是客戶端均可以向對方發送任意格式的數據。
特色: 支持雙向通訊,實時性更強,能夠發送多種數據類型;減小通訊量,只要創建起websocket鏈接,就能夠一直髮送消息;
缺點: 不支持斷開鏈接;