成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

socket.io之一: 介紹

william / 437人閱讀

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

socket.io提供了基于事件的實時雙向通訊

歷史

Web端與服務器間的實時數(shù)據(jù)傳輸?shù)氖且粋€很重要的需求,但最早只能通過AJAX輪詢詢實現(xiàn)。在WebSocket標準沒有推出之前,AJAX輪詢是唯一可行的方式(通過Flash瀏覽器也可以,但這里不做討論)。AJAX輪詢原理是設置定時器,定時通過AJAX同步服務器數(shù)據(jù)。這種方式存在延時且對服務端造成很大負載。直到2011年,IETF才標準化WebSocket——一種基于TCP套接字進行收發(fā)數(shù)據(jù)的協(xié)議?,F(xiàn)如今主流瀏覽器均已支持WebSocket。

socket.io將數(shù)據(jù)傳輸部分獨立出來形成了engine.io, engine.io對WebSocket和AJAX輪詢進行封裝,形成一套API,屏蔽了細節(jié)差異和兼容性問題,實現(xiàn)了跨瀏覽器/跨設備進行雙向數(shù)據(jù)。

socket.io對engine.io不是必須的,你也可以實現(xiàn)自己的engine.io,通過server.bind綁定

應用

實時數(shù)據(jù)分析展示(報表,日志)

即時通訊、聊天,

二進制流(圖片,音樂,視頻)傳輸

多人協(xié)同編輯

即時消息推送

類似技術

AJAX輪詢: 基于XMLHttpRequest的AJAX輪詢

AJAX長輪詢: 類似輪詢,服務器在客戶端請求后不返回響應,直到有數(shù)據(jù)需要傳到客戶端,傳完數(shù)據(jù)后客戶端再發(fā)起新的請求。缺點是要額外傳輸?shù)腍TTP頭,保持住請求不響應也需要一些額外工作。

HTTP流: 與AJAX長輪詢類似,服務端響應會帶上HTTP頭: Transfer-Encoding: chunked,返回完數(shù)據(jù)到客戶端后客戶端也不需要發(fā)起新的請求,缺點是各個chunk之間的數(shù)據(jù)難以識別和處理。

插件: 類似Flash,Silverlight, 作為插件越來越被主流瀏覽器和用戶排斥

下面就不同角度對各技術進行分析

單向/雙向

單向: AJAX輪詢,AJAX長輪詢,HTTP流

雙向: WebSocket, 插件

延時

WebSocket < 插件 < HTTP流 < AJAX長輪詢 < AJAX輪詢

效率

插件 > WebSocket > HTTP流 > AJAX長輪詢 > AJAX輪詢

移動端支持

WebSocket: 基本均支持
HTTP流,AJAX長輪詢,AJAX輪詢: 基本均支持
插件: 基本不支持

開發(fā)或設置難易程度

WebSocket < AJAX輪詢 < 插件 < AJAX長輪詢,HTTP流

結(jié)論

socket.io封裝了WebSocket,不支持WebSocket的情況還提供了降級AJAX輪詢,功能完備,設計優(yōu)雅,是開發(fā)實時雙向通訊的不二手段。

更多文章的目錄在這里

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/82558.html

相關文章

  • Redis 系列之一

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

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

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

    ziwenxie 評論0 收藏0
  • 利用 socket.io 實現(xiàn)消息實時推送

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

    RobinQu 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<