StreamWebSocket 类

定义

支持允许使用 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
继承
Object Platform::Object IInspectable StreamWebSocket
属性
实现

Windows 要求

设备系列
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 命名空间具有方便的帮助程序方法和枚举,用于在使用 WebSocket 时处理错误。 这有助于在应用中分别处理特定网络异常。 应用还可以使用参数验证错误异常中的 HRESULT 来了解有关导致异常的错误的更多详细信息。

有关可能的异常以及如何处理异常的详细信息,请参阅 处理网络应用中的异常

在 Windows Server 2012 上使用 StreamWebSocket

在 Windows Server 2012 和 Windows Server 2012 R2 上,实现 Windows.Networking.Sockets 命名空间中大多数类的 Windows.Networking.dll 将无法加载,除非启用了媒体基础功能。 因此,如果禁用 Media Foundation 功能,则使用 Windows.Networking.Sockets 命名空间中的 StreamWebSocket 和相关 WebSocket 类的应用将失败。 Windows Server 2012或Windows Server 2012 R2 安装时禁用了媒体基础功能。

可以使用 服务器管理器 或在命令提示符或脚本中输入以下文本,在 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

构造函数

StreamWebSocket()

创建新的 StreamWebSocket 对象。

属性

Control

获取 StreamWebSocket 对象上的套接字控件数据。

Information

获取 StreamWebSocket 对象上的套接字信息。

InputStream

获取要从 StreamWebSocket 对象上的远程目标读取的输入流。

OutputStream

获取要写入 StreamWebSocket 对象上的远程网络目标的输出流。

方法

Close()

关闭 StreamWebSocket 并将空的关闭帧发送到服务器。

Close(UInt16, String)

关闭 StreamWebSocket 并指示关闭的原因。

ConnectAsync(Uri)

启动异步操作以连接到 StreamWebSocket 对象上的远程网络目标。

Dispose()

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

SetRequestHeader(String, String)

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

事件

Closed

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

ServerCustomValidationRequested

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

适用于

另请参阅