在本文中,我們將了解 WebSocket,并逐步講解如何在客戶端配置 WebSocket 并與服務器通信。首先,讓我們先來了解一下“ WebSocket ”。
什么是 WebSocket
WebSocket 是一種協議,它提供了一種通過持久連接在客戶端和服務器之間交換數據的方法。數據可以以“數據包”的形式雙向傳遞,而無需斷開連接或進行任何額外的 HTTP 請求。
WebSocket 在需要持續數據交換的場景中非常有用,例如在線游戲、實時交易系統等。
打開 WebSocket 連接
客戶端通過稱為 WebSocket 握手 的過程建立 WebSocket 連接。此過程始于客戶端向服務器發送常規 HTTP 請求。該請求包含一個 Upgrade 標頭,用于告知服務器客戶端想要建立 WebSocket 連接。
下面是我們如何打開/創建 WebSocket 連接客戶端的簡單示例:
事件:套接字創建后,我們可以監聽其上的事件。共有 4 個事件:
?? ?? Onopen:當建立套接字連接時發生
? Onmessage:當客戶端從服務器接收數據時發生
? Onerror:當通信發生任何錯誤時發生
? Onclose:連接關閉時發生
方法:
?? ?? socket.send(data):使用連接傳輸數據
? socket.close([code], [reason]):終止任何現有連接
當我們調用new WebSocket(url)時 ,它會立即開始連接。
在連接期間,客戶端會詢問服務器:“您是否支持 Websocket?”如果服務器回答“是”,則對話繼續通過 WebSocket 協議進行。
通過new WebSocket(url)發出的瀏覽器頭請求
如下:
?? ?? Origin:客戶端頁面的來源,例如 https://localhost:44378。WebSocket 對象本質上是跨域的。
? 連接:升級——表示客戶端想要更改協議。
? 升級:websocket – 請求的協議是“websocket”。
? Sec-WebSocket-Key:瀏覽器生成的隨機密鑰,以確保安全。
? Sec-WebSocket-Version : 13,WebSocket 協議版本。
當服務器同意切換到WebSocket時,會發送響應碼101,如下所示:
握手完成后,客戶端或服務器就可以開始發送數據。
通過使用 WebSocket,我們可以傳輸任意數量的數據,而無需承擔傳統 HTTP 請求帶來的開銷。數據以消息的形式通過 WebSocket 進行傳輸 。
現在我們已經詳細了解了 WebSocket,讓我們使用 Asp.Net MVC Core Web 應用程序創建一個示例應用程序并按照以下步驟操作:
1.打開Visual Studio 2019并使用“Asp.Net MVC Core”模板創建一個Web應用程序。
2.應用程序創建后,它將具有以下文件夾結構:
3.移動到 wwwroot\js 目錄并創建一個 js 文件或打開 site.js 文件。
4.現在讓我們在其中添加以下代碼:
5.現在,打開 Startup.cs 文件并在其中添加以下代碼:
6.現在轉到 HomeController.cs 并在其中添加以下方法:
就是這樣,您的第一個 WebSocket 應用程序已準備就緒,讓我們構建并運行它以查看結果:
正如您在上圖中所看到的,通信已經開始,我們能夠發送和接收消息。
如果您喜歡此文章,請收藏、點贊、評論,謝謝,祝您快樂每一天。