socketio必須用在node嗎
socketio必須用在node中;socketio是nodejs的一個函式庫,利用nodejs的函數封裝了一些功能,並且依賴nodejs的一些api,所以只能在nodejs中使用,socketio也是在客戶端和服務端之間建立的雙向通訊資料交換技術,底層使用EngineIO。
本文操作環境:Windows10系統、nodejs 16版、Dell G3電腦。
socketio必須用在node中
socketio是nodejs的一個函式庫,相當於別人利用nodejs的函式封裝了一些函式給你使用,依賴與nodejs的一些api,所以只能在nodejs下用。
SocketIO是在客戶端和服務端之間建立的雙向通訊資料交換技術,底層使用EngineIO。 SocketIO的的客戶端使用Engine.IO-Client,服務端使用Engine.IO實作。
擴充知識
SocketIO如何運作
當一個瀏覽器嘗試建立SocketIO時,SocketIO首先使用xhr-polling建立一個長輪詢。長輪詢一旦建立,它將升級為WebSocket連接。
SocketIO底層是使用EngineIO函式庫實現的,這個函式庫使用WebSocket和XMLHttprequest封裝了一套自己的Socket協定(暫時叫 EIO Socket)。一個完整的 EIO Socket 包括多個 XHR 和 WebSocket 連線.
客戶端
EIO Socket 透過一個 XHR (XMLHttprequest) 握手。前端發送一個 XHR,告訴服務端我要開始 XHR 長輪詢了。後端回傳的資料裡麵包括一個 open 標誌(數字 0 表示), 以及sid 和 upgrades 字段,ping時間間隔,ping超時時間。
0{ “sid”: “8b7ab1ae-fbcf-4d23-8192-3c14a2a90721”, “upgrades”: [ “websocket” ], “pingInterval”: 10000, “pingTimeout”: 60000 }
sid 是本次 EIO Socket 的會話 ID,因為一次 EIO Socket 包含了多個請求,而後端又會同時連接多個 EIO Socket,sid 的作用就相當於 SESSION ID。
另一個欄位 upgrades,正常情況下是 [‘websocket’],表示可以把連線方式從長輪詢升級到 WebSocket。
前端在發送第一個 XHR 的時候就開始了 XHR 長輪詢,這個時候如果有收發資料的需求,是透過長輪詢實現的。所謂長輪詢,是指前端發送一個 request,服務端會等到有資料需要返回時再 response. 前端收到 response 後馬上發送下一次 request。這樣就可以實現雙向通訊。
前端收到握手的upgrades 後,EIO 會偵測瀏覽器是否支援WebSocket,如果支持,就會啟動一個WebSocket 連接,然後透過這個WebSocket 往伺服器發一條內容為probe, 類型為ping 的數據。如果這時伺服器回傳了內容為probe, 類型為pong 的數據,前端就會把前面建立的HTTP 長輪詢停掉,後面只使用WebSocket 通道進行收發數據
EIO Socket 生命週期內,會間隔一段時間ping - pong 一次,用來測試網路是否正常。
這是 WebSocket 訊框的結構,綠色是發送,白色是接收。前面的數字是封包類型,2 是 ping, 3 是 pong, 42是 message
推薦學習:《nodejs影片教學》
以上是socketio必須用在node嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

nvm刪除node的方法:1、下載「nvm-setup.zip」並將其安裝在C碟;2、設定環境變量,並透過「nvm -v」指令查看版本號;3、使用「nvm install」指令安裝node;4、透過「nvm uninstall」指令刪除已安裝的node即可。

怎麼處理文件上傳?以下這篇文章為大家介紹一下node專案中如何使用express來處理文件的上傳,希望對大家有幫助!

這段時間在開發一個騰訊文檔全品類通用的HTML 動態服務,為了方便各品類接入的生成與部署,也順應上雲的趨勢,考慮使用Docker 的方式來固定服務內容,統一進行製品版本的管理。這篇文章就將我在服務 Docker 化的過程中累積起來的優化經驗分享出來,供大家參考。

這篇文章跟大家分享Node的進程管理工具“pm2”,聊聊為什麼需要pm2、安裝和使用pm2的方法,希望對大家有幫助!

PiNetwork節點詳解及安裝指南本文將詳細介紹PiNetwork生態系統中的關鍵角色——Pi節點,並提供安裝和配置的完整步驟。 Pi節點在PiNetwork區塊鏈測試網推出後,成為眾多先鋒積極參與測試的重要環節,為即將到來的主網發布做準備。如果您還不了解PiNetwork,請參考Pi幣是什麼?上市價格多少? Pi用途、挖礦及安全性分析。什麼是PiNetwork? PiNetwork項目始於2019年,擁有其專屬加密貨幣Pi幣。該項目旨在創建一個人人可參與

如何用pkg打包nodejs可執行檔?以下這篇文章跟大家介紹一下使用pkg將Node專案打包為執行檔的方法,希望對大家有幫助!

npm node gyp失敗是因為“node-gyp.js”跟“Node.js”版本不匹配,其解決辦法:1、透過“npm cache clean -f”清除node快取;2、透過“npm install -g n”安裝n模組;3、透過「n v12.21.0」指令安裝「node v12.21.0」版本即可。

身份驗證是任何網路應用程式中最重要的部分之一。本教程討論基於令牌的身份驗證系統以及它們與傳統登入系統的差異。在本教程結束時,您將看到一個用Angular和Node.js編寫的完整工作演示。傳統身份驗證系統在繼續基於令牌的身份驗證系統之前,讓我們先來看看傳統的身份驗證系統。使用者在登入表單中提供使用者名稱和密碼,然後點擊登入。發出請求後,透過查詢資料庫在後端驗證使用者。如果請求有效,則使用從資料庫中獲取的使用者資訊建立會話,然後在回應頭中傳回會話訊息,以便將會話ID儲存在瀏覽器中。提供用於存取應用程式中受
