StreamWebSocket 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
支援網路通訊,允許使用 WebSocket 讀寫串流。
public ref class StreamWebSocket sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StreamWebSocket final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class StreamWebSocket final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StreamWebSocket : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class StreamWebSocket : System.IDisposable
function StreamWebSocket()
Public NotInheritable Class StreamWebSocket
Implements IDisposable
- 繼承
- 屬性
- 實作
Windows 需求
| 規格需求 | Description |
|---|---|
| 裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
| API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
| 應用程式功能 |
internetClient
privateNetworkClientServer
|
備註
StreamWebSocket 類別提供了基於串流的訊息式 WebSocket 協定抽象化。 這對於需要傳輸大型檔案(如照片或影片)的情況非常有用。 使用 StreamWebSocket 允許每次讀取操作讀取訊息的各個區段,而不必像 MessageWebSocket 那樣一次性讀取整則訊息。
StreamWebSocket 僅支援二進位訊息。 對於 UTF-8 訊息,必須使用 MessageWebSocket 。
處理例外狀況
你必須寫程式碼來處理 StreamWebSocket 類別上的非同步方法異常。 例外可能因參數驗證錯誤、名稱解析失敗及網路錯誤而產生。 網路錯誤的例外(例如連線中斷、連線失敗及 HTTP 伺服器故障)可能隨時發生。 這些錯誤會導致拋出例外。 如果應用程式無法處理,例外可能會導致整個應用程式在執行時被終止。
Windows。Networking.Sockets 命名空間提供方便的輔助方法與列舉方式,用於處理使用 WebSockets 時的錯誤。 這對於在應用程式中處理特定網路例外的方式很有幫助。 應用程式也可以利用例外中對參數驗證錯誤的 HRESULT 來學習導致異常的更詳細資訊。
欲了解更多可能例外及如何處理例外的資訊,請參閱 「網路應用程式中的例外處理」。
在 Windows Server 2012 上使用 StreamWebSocket
在 Windows Server 2012 和 Windows Server 2012 R2,這是實作大部分 Windows 類別的 Windows.Networking.dll。Networking.Sockets 命名空間若未啟用 Media Foundation 功能,將無法載入。 因此,Windows 中使用 StreamWebSocket 及相關 WebSocket 類別的應用程式,如果關閉 Media Foundation 功能,Networking.Sockets 命名空間將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 安裝時,關閉了媒體基礎功能。
媒體基礎功能可在 Windows Server 2012 或 Windows Server 2012 R2 上啟用,使用 伺服器管理員,或透過命令提示字元或腳本輸入以下文字:
dism /online /enable-feature /featurename:ServerMediaFoundation 啟用 Media Foundation 功能後,使用者會被提示重新啟動。 電腦重新啟動後,Windows 中會建立 sockets 和 WebSockets 的類別。Networking.sockets 命名空間會如預期運作。
版本歷程記錄
| Windows版本 | SDK 版本 | 附加價值 |
|---|---|---|
| 1607 | 14393 | ServerCustomValidationRequested |
建構函式
| 名稱 | Description |
|---|---|
| StreamWebSocket() |
建立一個新的 StreamWebSocket 物件。 |
屬性
| 名稱 | Description |
|---|---|
| Control |
取得 StreamWebSocket 物件上的 socket 控制資料。 |
| Information |
取得 StreamWebSocket 物件的 socket 資訊。 |
| InputStream |
取得輸入串流,從 StreamWebSocket 物件的遠端目的地讀取。 |
| OutputStream |
取得輸出串流,寫入遠端網路目的地的 StreamWebSocket 物件。 |
方法
| 名稱 | Description |
|---|---|
| Close() |
關閉 StreamWebSocket ,並傳送一個空的關閉框架給伺服器。 |
| Close(UInt16, String) |
關閉 StreamWebSocket ,並指示關閉原因。 |
| ConnectAsync(Uri) |
啟動一個非同步操作,連接 StreamWebSocket 物件上的遠端網路目的地。 |
| Dispose() |
執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。 |
| SetRequestHeader(String, String) |
在 StreamWebSocket 物件所用的 WebSocket 協定握手中使用的 HTTP 請求訊息中,新增 HTTP 請求標頭。 |
事件
| 名稱 | Description |
|---|---|
| Closed |
當 StreamWebSocket 物件接收到接近的框架時,會發生在接近握手中。 |
| ServerCustomValidationRequested |
當正在驗證與安全伺服器 URI(wss:協定)的新 StreamWebSocket 連線時,會發生這種情況。 如果你想為連線實作自訂伺服器驗證,就處理這個事件。 |