首頁 > web前端 > js教程 > 主體

node.js中socket.io學習教學介紹(一)

零下一度
發布: 2017-05-03 10:02:40
原創
1537 人瀏覽過

socket.io提供了基於事件的即時雙向通訊,所以下面這篇文章主要介紹了關於socket.io的相關資料,主要介紹了學習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輪詢

1、效率


外掛程式> WebSocket > HTTP流> AJAX長輪詢> AJAX輪詢

1、行動裝置支援


WebSocket: 基本皆支援


HTTP流,AJAX長輪詢,AJAX輪詢: 基本皆支援


外掛程式: 基本上不支援

1、開發或設定難易度


WebSocket < AJAX輪詢< 外掛程式< AJAX長輪詢,HTTP流

總結

socket.io封裝了WebSocket,不支援WebSocket的情況也提供了降級AJAX輪詢,功能完備,設計優雅,是開發即時雙向通訊的不二手段。

以上是node.js中socket.io學習教學介紹(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板