共用方式為


使用 WebSocket 進行連線 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

使用 Windows.Networking.Sockets 命名空間的功能,透過 WebSocket 傳送和接收資料,以取得低延遲、安全、即時雙向網路通訊。

什麼是 WebSocket?

WebSocket 通訊協定定義網頁上用戶端與伺服器之間,快速且安全的雙向通訊機制。資料會立即透過全雙工單一通訊端連線來傳輸,因此能即時從這兩個端點傳送與接收訊息。WebSocket 十分適用於包含以下功能的 Windows 執行階段應用程式:即時遊戲、立即社交網路通知、最新股票或氣象資訊顯示,以及其他需要安全且快速資料傳輸的應用程式。WebSocket 也能通過 Proxy 和防火牆運作,因為 WebSocket 通訊協定預設和網頁瀏覽器使用相同的連接埠 (HTTP 和 HTTPS)。

為了建立 WebSocket 連線,會在用戶端與伺服器之間交換 HTTP 交握。如果成功,應用程式層的通訊協定會使用之前已建立的 TCP 連線,從 HTTP「升級」至 WebSocket。 一旦發生這種情況,便完全不需要 HTTP;資料可以使用 WebSocket 通訊協定透過這兩個端點來傳送或接收,直到關閉 WebSocket 連線為止。

重要  除非伺服器也使用 WebSocket 通訊協定,否則用戶端無法使用 WebSocket 來傳輸資料。 如果伺服器不支援 WebSocket,則必須使用其他資料傳輸方法。

 

Windows.Networking.Sockets 命名空間在 Windows 執行階段提供用戶端 WebSocket 的支援。適用於傳統型應用程式的 Windows 8.1 可同時支援用戶端和伺服器 WebSocket。

Windows.Networking.Sockets 命名空間定義兩種類型的 WebSocket 物件,供 Windows 執行階段應用程式中的用戶端使用:MessageWebSocketStreamWebSocket。下表說明兩種類型的 WebSocket。

MessageWebSocket StreamWebSocket
適用於訊息不是非常大的一般案例。 適用於傳輸大型檔案 (例如相片或電影) 的案例。
啟用已經收到整個 WebSocket 訊息的通知。 允許使用每個讀取操作來讀取訊息區段。
支援 UTF-8 和二進位兩種訊息。 僅支援二進位訊息。
可能相容於 UDP 通訊端 (DatagramSocket)。 可能相容於 TCP 通訊端 (StreamSocket)。

 

使用具有網路隔離的 WebSocket

在 Windows 執行階段中的網路隔離功能可讓開發人員控制和限制 Windows 執行階段應用程式的網路存取。 並非所有的應用程式都需要存取網路。不過對於那些需要存取網路的應用程式,Windows 執行階段提供對網路不同層級的存取權,這些存取權可透過選取適當的功能來啟用。

網路隔離可讓開發人員為每個應用程式定義所需網路存取權的範圍。沒有定義適當範圍的應用程式在於防止存取指定類型的網路,以及特定類型的網路要求 (輸出用戶端起始的要求,或是輸入未經同意的要求以及輸出用戶端起始的要求)。 設定和強制網路隔離的功能可確保如果應用程式確實受到威脅,它只能存取已明確授與應用程式存取權的網路。這將可大幅減少對其他應用程式和 Windows 的影響範圍。

網路隔離會影響 Windows.Networking.Sockets 命名空間中任何想存取網路的類別元素。 Windows 會主動強制網路隔離。如果未啟用適當的網路功能,則在 Windows.Networking.Sockets 命名空間的 MessageWebSocketStreamWebSocket 類別上呼叫方法,會因為網路隔離而導致網路存取失敗。

建立應用程式時,會在應用程式資訊清單中設定應用程式的網路功能。開發應用程式時,通常會使用 Microsoft Visual Studio 2013 Update 2 來新增網路功能。 也可以使用文字編輯器在應用程式資訊清單檔案中手動設定網路功能。

如需網路隔離的詳細資訊,請參閱如何設定網路功能

開發人員對象

下列主題中的範例使用 JavaScript,並且使用 WebSocket 範例做為依據。 如需使用 JavaScript 建立 Windows 執行階段應用程式的一般協助,請參閱使用 JavaScript 建立 Windows 執行階段應用程式的藍圖

在本節中

主題 說明
如何使用 MessageWebSocket 進行連線

詳述使用 MessageWebSocket 從網頁伺服器傳送和接收資料的需求與特定步驟。

如何使用 StreamWebSocket 進行連線

詳述使用 StreamWebSocket 從網頁伺服器傳送和接收資料的需求與特定步驟。

如何使用進階 WebSocket 控制項

說明如何在 WebSocket 物件上使用進階通訊端控制項設定選項。

如何使用 TLS/SSL 保護 WebSocket 連線

說明如何使用傳輸層安全性 (TLS)/安全通訊端層 (SSL) 保護 WebSocket 連線。

 

了解類似與相關的功能

章節 說明
如何設定網路隔離功能

說明網路隔離功能,以及如何設定網路隔離功能,才能完全控制 Windows 市集應用程式的網路存取。

使用通訊端建立網路連線

詳述使用通訊端從網路資源傳送和接收資料的需求與特定步驟。

新增網路支援

包含將網路支援新增到應用程式的資訊。

疑難排解和偵錯網路連線

提供建議和資訊以協助疑難排解連線問題。

 

相關主題

其他

使用 JavaScript 建立 Windows 執行階段應用程式的藍圖

參考

MessageWebSocket

StreamWebSocket

Windows.Networking.Sockets

範例

WebSocket 範例