国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

socket.io之一: 介紹

william / 385人閱讀

摘要:在標準沒有推出之前,輪詢是唯一可行的方式通過瀏覽器也可以,但這里不做討論。這種方式存在延時且對服務端造成很大負載。直到年,才標準化一種基于套接字進行收發數據的協議。現如今主流瀏覽器均已支持。

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

相關文章

  • Redis 系列之一

    摘要:這個文件事件處理器是單線程的,所以叫做單線程模型,采用多路復用機制同時監聽多個,根據上的事件來選擇對應的事件處理器處理這個事件。 為什么使用緩存 優點: 高性能 高并發 MySQL天然對高并發不好,MySQL單機支撐2000qps也開始容易報警,可以使用緩存,讓數據查詢從緩存中拿出數據 缺點: 緩存的數據和數據庫的數據不一致 緩存雪崩 緩存穿透 緩存并發競爭 redis 和m...

    chengjianhua 評論0 收藏0
  • 一篇文章帶你徹底搞懂NIO

    摘要:阻塞當進行讀寫時,線程是阻塞的狀態。當任何一個收到數據后,中斷程序將喚起進程。接收數據當收到數據后,中斷程序會給的就緒列表添加引用。當接收到數據,中斷程序一方面修改,另一方面喚醒等待隊列中的進程,進程再次進入運行狀態如下圖。 本篇文章目的在于基本概念和原理的解釋,不會貼過多的使用代碼。 什么是NIO Java NIO (New IO)是 Java 的另一個 IO API (來自 jav...

    ziwenxie 評論0 收藏0
  • 利用 socket.io 實現消息實時推送

    摘要:為了達到這種雙向的實時消息傳遞,很明顯地考慮用來實現。注意這個文件并不能用在實際的項目中,只是用來顯示消息推送的效果而已。參考資料本文在我博客上的原地址利用實現消息實時推送 項目背景介紹 最近在寫的項目中存在著社交模塊,需要實現這樣的一個功能:當發生了用戶被點贊、評論、關注等操作時,需要由服務器向用戶實時地推送一條消息。最終完成的項目地址為:socket-message-push,這里...

    RobinQu 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<