目的
Important
在 Windows 上选择 WebSocket API — 有多个 WebSocket 选项。 根据应用程序类型进行选择:
| API | 最适用于 | 备注 |
|---|---|---|
| WinHTTP WebSocket (WinHttpWebSocketSend 等) | 需要通过 WinHTTP 使用 WebSocket 的服务、服务器端代码、C/C++ 应用 | 与 WinHTTP 代理/身份验证集成;需要Windows 8+ 。 建议用于 Win32 服务方案。 |
| Windows。Networking.Sockets (MessageWebSocket、StreamWebSocket) | UWP 应用、新式 C++/WinRT 桌面应用 | 最高级别的 API;处理帧和 TLS。 应用必须实现自己的重新连接逻辑。 建议用于新的桌面/UWP 应用。 |
| WebSocket 协议组件 (此 API - websocket.dll) | 仅需要协议框架/分析的自定义传输实现 | 低级别: 不 处理 I/O、HTTP 升级、身份验证或代理。 必须提供自己的传输(通常是原始 Winsock + TLS)。 |
| 系统.Net。WebSocket (.NET) | .NET 应用程序 | 托管的、异步优先的跨平台。 用于 ClientWebSocket 客户端。 |
| 第三方库 (libwebsocket、Boost.Beast 等) | 跨平台 C/C++ | 不是特定于Windows;在面向多个平台时很有用。 |
对于大多数应用程序,WinHTTP WebSocket(services/Win32)或Windows。Networking.Sockets (新式应用)是正确的选择。 仅当需要通过完全控制的传输进行自定义框架时,才使用低级别 WebSocket 协议组件 API。
WebSocket 协议组件 API 支持通过跨现有网络中介工作的 HTTP 的异步双向通信通道。 使用 WebSocket 协议组件 API,客户端使用 HTTP 与服务器通信,然后双方切换到使用分层 HTTP 的基础协议(如 TCP 或 SSL)。 目标是首先使用 HTTP 遍历网络中介,然后使用建立的端到端底层 TCP/SSL 通道进行双向应用程序通信。 WebSocket 协议 [WSPROTO] 在 IETF 中定义,而关联的 Javascript API(WebSocket)在 WHATWG 中定义。
在本部分中
| 主题 | 描述 |
|---|---|
|
WebSocket 协议组件 API 数据类型 |
WebSocket 协议组件 API 定义这些数据类型。 |
|
WebSocket 协议组件 API 枚举 |
WebSocket 协议组件 API 定义这些枚举。 |
|
WebSocket 协议组件 API 函数 |
WebSocket 协议组件 API 定义这些函数。 |
|
WebSocket 协议组件 API 结构 |
WebSocket 协议组件 API 定义这些结构。 |
开发人员受众
WebSocket 协议组件 API 旨在供 C/C++ 程序员使用。 需要熟悉 HTTP 和 Windows 网络。
注意
在 Windows 上使用 WebSocket 协议的首选方法是通过 Windows HTTP Services (WinHTTP) API 或 Windows.Networking.Sockets 命名空间。
运行时要求
WebSocket 协议组件 API 需要 Windows 8 及更高版本的 Windows作系统。 可以通过 websocket.dll动态链接 API。
注意
websocket.dll 支持客户端和服务器握手相关的 HTTP 标头、验证收到的握手数据并分析 WebSocket 数据流。 它不会处理任何特定于 HTTP 的作(重定向、身份验证、代理支持),也不会执行任何 I/O作(发送和接收 WebSocket 流字节)。