摘要:在標準沒有推出之前,輪詢是唯一可行的方式通過瀏覽器也可以,但這里不做討論。這種方式存在延時且對服務端造成很大負載。直到年,才標準化一種基于套接字進行收發數據的協議。現如今主流瀏覽器均已支持。
socket.io提供了基于事件的實時雙向通訊
歷史Web端與服務器間的實時數據傳輸的是一個很重要的需求,但最早只能通過AJAX輪詢詢實現。在WebSocket標準沒有推出之前,AJAX輪詢是唯一可行的方式(通過Flash瀏覽器也可以,但這里不做討論)。AJAX輪詢原理是設置定時器,定時通過AJAX同步服務器數據。這種方式存在延時且對服務端造成很大負載。直到2011年,IETF才標準化WebSocket——一種基于TCP套接字進行收發數據的協議。現如今主流瀏覽器均已支持WebSocket。
socket.io將數據傳輸部分獨立出來形成了engine.io, engine.io對WebSocket和AJAX輪詢進行封裝,形成一套API,屏蔽了細節差異和兼容性問題,實現了跨瀏覽器/跨設備進行雙向數據。
應用socket.io對engine.io不是必須的,你也可以實現自己的engine.io,通過server.bind綁定
實時數據分析展示(報表,日志)
即時通訊、聊天,
二進制流(圖片,音樂,視頻)傳輸
多人協同編輯
即時消息推送
類似技術AJAX輪詢: 基于XMLHttpRequest的AJAX輪詢
AJAX長輪詢: 類似輪詢,服務器在客戶端請求后不返回響應,直到有數據需要傳到客戶端,傳完數據后客戶端再發起新的請求。缺點是要額外傳輸的HTTP頭,保持住請求不響應也需要一些額外工作。
HTTP流: 與AJAX長輪詢類似,服務端響應會帶上HTTP頭: Transfer-Encoding: chunked,返回完數據到客戶端后客戶端也不需要發起新的請求,缺點是各個chunk之間的數據難以識別和處理。
插件: 類似Flash,Silverlight, 作為插件越來越被主流瀏覽器和用戶排斥
下面就不同角度對各技術進行分析
單向/雙向
單向: AJAX輪詢,AJAX長輪詢,HTTP流
雙向: WebSocket, 插件
延時
WebSocket < 插件 < HTTP流 < AJAX長輪詢 < AJAX輪詢
效率
插件 > WebSocket > HTTP流 > AJAX長輪詢 > AJAX輪詢
移動端支持
WebSocket: 基本均支持
HTTP流,AJAX長輪詢,AJAX輪詢: 基本均支持
插件: 基本不支持
開發或設置難易程度
WebSocket < AJAX輪詢 < 插件 < AJAX長輪詢,HTTP流
結論socket.io封裝了WebSocket,不支持WebSocket的情況還提供了降級AJAX輪詢,功能完備,設計優雅,是開發實時雙向通訊的不二手段。
更多文章的目錄在這里
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82558.html
摘要:這個文件事件處理器是單線程的,所以叫做單線程模型,采用多路復用機制同時監聽多個,根據上的事件來選擇對應的事件處理器處理這個事件。 為什么使用緩存 優點: 高性能 高并發 MySQL天然對高并發不好,MySQL單機支撐2000qps也開始容易報警,可以使用緩存,讓數據查詢從緩存中拿出數據 缺點: 緩存的數據和數據庫的數據不一致 緩存雪崩 緩存穿透 緩存并發競爭 redis 和m...
摘要:阻塞當進行讀寫時,線程是阻塞的狀態。當任何一個收到數據后,中斷程序將喚起進程。接收數據當收到數據后,中斷程序會給的就緒列表添加引用。當接收到數據,中斷程序一方面修改,另一方面喚醒等待隊列中的進程,進程再次進入運行狀態如下圖。 本篇文章目的在于基本概念和原理的解釋,不會貼過多的使用代碼。 什么是NIO Java NIO (New IO)是 Java 的另一個 IO API (來自 jav...
摘要:為了達到這種雙向的實時消息傳遞,很明顯地考慮用來實現。注意這個文件并不能用在實際的項目中,只是用來顯示消息推送的效果而已。參考資料本文在我博客上的原地址利用實現消息實時推送 項目背景介紹 最近在寫的項目中存在著社交模塊,需要實現這樣的一個功能:當發生了用戶被點贊、評論、關注等操作時,需要由服務器向用戶實時地推送一條消息。最終完成的項目地址為:socket-message-push,這里...
閱讀 2170·2021-10-08 10:15
閱讀 1199·2019-08-30 15:52
閱讀 525·2019-08-30 12:54
閱讀 1543·2019-08-29 15:10
閱讀 2696·2019-08-29 12:44
閱讀 3017·2019-08-29 12:28
閱讀 3367·2019-08-27 10:57
閱讀 2226·2019-08-26 12:24