如何使用進階 WebSocket 控制項 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
這個主題說明在 Windows 執行階段應用程式使用 MessageWebSocket 和 StreamWebSocket 功能時,如何使用進階通訊端控制項。
您必須知道的事
技術
-
使用通訊端與 WebSocket 啟用網路通訊。
先決條件
- 這個主題的範例是使用 JavaScript 撰寫的。建議對 WebSocket 有基本的了解。
進階 WebSocket 控制項概觀
MessageWebSocket 和 StreamWebSocket 類別都遵循使用進階控制項的相同模型。對應到上述每一個主要類別的是可以存取進階控制項的相關類別:
- MessageWebSocketControl - 在 MessageWebSocket 物件上提供服務品質的通訊端控制項。
- StreamWebSocketControl - 提供 StreamWebSocket 物件的通訊端控制項資料。
兩種類型的 WebSocket 使用的進階控制項基本模型都是相同的。 以下討論使用 StreamWebSocket 做為範例,但是相同程序也可搭配 MessageWebSocket 使用。
- 建立一個 StreamWebSocket。
- 使用 StreamWebSocket.Control 屬性來取得與 StreamWebSocket 物件關聯的 StreamWebSocketControl 執行個體。
- 在 StreamWebSocketControl 設定屬性以設定進階通訊端選項。
應用程式必須一律先在 StreamWebSocketControl 設定屬性,才能發出連線作業。因此,最好在建立通訊端後,立即設定任何進階選項。請勿在通訊端呼叫 ConnectAsync 方法之後嘗試設定 StreamWebSocketControl 屬性。
進階 StreamWebSocket 控制項
StreamWebSocket 有數個進階選項。
- StreamWebSocketControl.NoDelay - 指出 StreamWebSocket 物件是否使用 Nagle 演算法。
- StreamWebSocketControl.OutboundBufferSizeInBytes - 控制用來在 StreamWebSocket 物件上傳送資料的傳送緩衝區大小 (位元組)。
- StreamWebSocketControl.ProxyCredential - 提供使用 StreamWebSocket 物件透過 HTTP 標頭驗證來驗證 Proxy 伺服器時所要使用的認證。
- StreamWebSocketControl.ServerCredential - 提供使用 StreamWebSocket 物件透過 HTTP 標頭驗證來驗證 WebSocket 伺服器時所要使用的認證。
- StreamWebSocketControl.SupportedProtocols - 取得可用來新增支援的子通訊協定清單的集合,該清單會在連線交握期間公告給伺服器。
例如,讓我們詳細看看 StreamWebSocketControl.NoDelay 選項。建立 StreamWebSocket 時的預設設定是將這個選項設定為 true,以停用 Nagle 演算法。不過,如果將 StreamWebSocket 用於傳送許多小型封包的應用程式,而且沒有延遲的問題時,則可以將 StreamWebSocketControl.NoDelay 設定為 false 以啟用 Nagle 演算法,來減少網路流量。
下列範例會建立一個 StreamWebSocket,並將 StreamWebSocketControl.NoDelay 設定成 false。完成之後,應用程式就可以連線 StreamWebSocket
var clientWebSocket = new Windows.Networking.Sockets.StreamWebSocket();
// Get the current setting for this option
// This isn't required, but it shows how to get the current setting
var currentSetting = clientWebSocket.control.noDelay;
// Set noDelay to false so that the Nagle algorithm isn't disabled
clientWebSocket.control.noDelay = false;
// Now you can call the ConnectAsync method to connect the StreamWebSocket.
進階 MessageWebSocket 控制項
MessageWebSocket 有許多進階選項與 StreamWebSocket 相同,但還是有些許的差異。
- MessageWebSocketControl.MaxMessageSize - 控制要在 MessageWebSocket 物件上設定的 WebSocket 訊息的訊息大小上限 (位元組)。
- MessageWebSocketControl.MessageType - 控制要在 MessageWebSocket 物件上設定的 WebSocket 訊息類型 (二進位或 UTF-8)。
- MessageWebSocketControl.OutboundBufferSizeInBytes - 控制用來在 MessageWebSocket 物件上傳送資料的傳送緩衝區大小 (位元組)。
- MessageWebSocketControl.ProxyCredential - 提供使用 MessageWebSocket 物件透過 HTTP 標頭驗證來驗證 Proxy 伺服器時所要使用的認證。
- MessageWebSocketControl.ServerCredential - 提供使用 MessageWebSocket 物件透過 HTTP 標頭驗證來驗證 WebSocket 伺服器時所要使用的認證。
- MessageWebSocketControl.SupportedProtocols - 取得可用來新增支援的子通訊協定清單的集合,該清單會在連線交握期間公告給伺服器。
在 MessageWebSocket 設定選項的方式與上面的範例大致相同。
備註
除了控制資料之外,一組類似的相關類別可提供存取這些主要類別的其他資訊:
- MessageWebSocketInformation - 提供 MessageWebSocket 物件的通訊端資訊。
- StreamWebSocketInformation - 提供 StreamWebSocket 物件的通訊端資訊。
這些類別具有提供通訊端其他資訊的屬性。
相關主題
其他
參考
範例