MessageWebSocket 类

定义

支持网络通信,允许使用 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
继承
Object Platform::Object IInspectable MessageWebSocket
属性
实现

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 将无法加载,除非启用了 Media Foundation 功能。 因此,如果禁用 Media Foundation 功能,则使用 Windows.Networking.Sockets 命名空间中的 MessageWebSocket 和相关 WebSocket 类的应用将失败。 Windows Server 2012 或 Windows Server 2012 R2 安装时禁用了 Media Foundation 功能。

可以使用 服务器管理器或在命令提示符或脚本中输入以下文本,在 Windows Server 2012 或 Windows Server 2012 R2 上启用 Media Foundation 功能:

dism /online /enable-feature /featurename:ServerMediaFoundation 启用 Media Foundation 功能后,系统会提示用户重启。 重启计算机后, Windows.Networking.Sockets 命名空间中套接字和 WebSocket 的类将按预期工作。

版本历史记录

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()

执行与释放或重置非托管资源关联的应用程序定义的任务。

SendFinalFrameAsync(IBuffer)

异步 (进度) 在顺序流中写入数据帧,其语义是 WebSocket 消息中的最后一帧, (此帧上的 FIN 位设置为 1) 。 此方法和 SendNonfinalFrameAsync 允许发送单个 WebSocket 帧。

SendNonfinalFrameAsync(IBuffer)

异步 (进度) 在顺序流中写入数据帧, (此帧上的 FIN 位设置为 0) ,则更多帧将遵循同一 WebSocket 消息所遵循的语义。 此方法和 SendFinalFrameAsync 允许你发送单个 WebSocket 帧。

SetRequestHeader(String, String)

将 HTTP 请求标头添加到 MessageWebSocket 对象在 WebSocket 协议握手中使用的 HTTP 请求消息。

事件

Closed

在作为关闭握手的一部分在 MessageWebSocket 对象上收到关闭框架时发生。

MessageReceived

一个事件,指示在 MessageWebSocket 对象上收到了消息。

ServerCustomValidationRequested

在验证与受保护服务器 URI 的新 MessageWebSocket 连接 (wss: 协议) 时发生。 如果要为连接实现自定义服务器验证,请处理此事件。

适用于

另请参阅