MessageWebSocket 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
支援網路通訊,允許使用 WebSocket 讀取和寫入整個訊息。
public ref class MessageWebSocket 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 MessageWebSocket 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 MessageWebSocket 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 MessageWebSocket : 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 MessageWebSocket : System.IDisposable
function MessageWebSocket()
Public NotInheritable Class MessageWebSocket
Implements IDisposable
- 繼承
- 屬性
- 實作
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
應用程式功能 |
internetClient
privateNetworkClientServer
|
備註
MessageWebSocket 類別提供 WebSocket 通訊協定的訊息式抽象概念。 使用 MessageWebSocket 時,整個 WebSocket 訊息會在單一作業中讀取或寫入。 相反地, StreamWebSocket 允許使用每個讀取作業讀取訊息的區段,而不需要在單一作業中讀取整個訊息。
針對 UTF-8 訊息,必須使用 MessageWebSocket。 StreamWebSocket 僅支援二進位訊息。
處理例外狀況
當您在 MessageWebSocket 類別上呼叫非同步方法時,您必須撰寫程式碼來處理例外狀況。 例外狀況可能是因為參數驗證錯誤、名稱解析失敗和網路錯誤所造成。 網路錯誤 (連線中斷、連線失敗和 HTTP 伺服器失敗的例外狀況,例如,隨時可能會發生) 。 這些錯誤會造成擲出例外狀況。 如果應用程式未處理,例外狀況可能會導致整個應用程式由執行時間終止。
Windows.Networking.Sockets命名空間具有方便的協助程式方法和列舉,可用來在使用 WebSocket 時處理錯誤。 這對於在您的應用程式中以不同的方式處理特定網路例外狀況時很有用。 應用程式也可以使用來自參數驗證錯誤例外狀況的 HRESULT ,深入瞭解造成例外狀況之錯誤的詳細資訊。
如需可能例外狀況以及如何處理例外狀況的詳細資訊,請參閱 處理網路應用程式中的例外狀況。
在 Windows Server 2012 上使用 MessageWebSocket
在 Windows Server 2012 和 Windows Server 2012 R2 上,除非啟用媒體基礎功能,否則實作Windows.Networking.Sockets命名空間中大部分類別的Windows.Networking.dll將無法載入。 因此,如果媒體基礎功能已停用,則使用 MessageWebSocket 和 Windows.Networking.Sockets 命名空間中相關 WebSocket 類別的應用程式將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 會安裝並停用 Media Foundation 功能。
媒體基礎功能可以在 Windows Server 2012 或 Windows Server 2012 R2 上使用 伺服器管理員,或在命令提示字元或腳本中輸入下列文字來啟用:
dism /online /enable-feature /featurename:ServerMediaFoundation
啟用媒體基礎功能之後,系統會提示使用者重新開機。 重新開機電腦之後, Windows.Networking.Sockets 命名空間中的通訊端和 WebSockets 類別會如預期般運作。
版本歷程記錄
Windows 版本 | SDK 版本 | 已新增值 |
---|---|---|
1607 | 14393 | ServerCustomValidationRequested |
1803 | 17134 | SendFinalFrameAsync |
1803 | 17134 | SendNonfinalFrameAsync |
建構函式
MessageWebSocket() |
建立新的 MessageWebSocket 物件。 |
屬性
Control |
取得 MessageWebSocket 物件上的通訊端控制項資料。 |
Information |
取得 MessageWebSocket 物件的通訊端資訊。 |
OutputStream |
取得輸出資料流程,以寫入 MessageWebSocket 物件上的遠端網路目的地。 |
方法
Close() |
關閉 MessageWebSocket 物件,並將空的關閉框架傳送給伺服器。 |
Close(UInt16, String) |
關閉 MessageWebSocket 物件,並指出關閉的原因。 |
ConnectAsync(Uri) |
啟動非同步作業,以連線到 MessageWebSocket 物件上的遠端網路目的地。 |
Dispose() |
執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。 |
SendFinalFrameAsync(IBuffer) |
以非同步方式 (進度) 在循序資料流程中寫入資料框架,而此框架是 WebSocket 訊息中最後一個框架的語意, (此框架上的 FIN 位設定為 1) 。 這個方法和 SendNonfinalFrameAsync 可讓您傳送個別的 WebSocket 框架。 |
SendNonfinalFrameAsync(IBuffer) |
以非同步方式 (與進度) 在循序資料流程中寫入資料框架,而更多畫面格會遵循相同 WebSocket 訊息的語意, (此框架上的 FIN 位設定為 0) 。 此方法和 SendFinalFrameAsync 可讓您傳送個別的 WebSocket 框架。 |
SetRequestHeader(String, String) |
將 HTTP 要求標頭新增至 MessageWebSocket 物件在 WebSocket 通訊協定交握中使用的 HTTP 要求訊息。 |
事件
Closed |
在 MessageWebSocket 物件上收到關閉框架做為關閉交握的一部分時發生。 |
MessageReceived |
事件,指出 MessageWebSocket 物件上收到訊息。 |
ServerCustomValidationRequested |
在驗證安全伺服器 URI 的新 MessageWebSocket 連線 (wss 時發生: 通訊協定) 。 如果您想要實作連線的自訂伺服器驗證,請處理此事件。 |