使用 WebSockets 进行连接 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

使用 Windows.Networking.Sockets 命名空间中的功能通过 WebSocket 发送和接收数据,以实现低延迟且安全的双向实时网络通信。

什么是 WebSocket?

WebSocket 协议定义了客户端 与服务器之间通过 Web 进行快速而又安全的双向通信的机制。数据通过全双工套接字连接立即传输,从而允许从两个终结点实时发送和接收消息。WebSocket 最适合用于包含实时游戏、即时社交网络通知、显示最新的股票或天气信息的 Windows 运行时应用,以及其他需要安全而又快速地传输数据的应用。由于默认情况下 WebSocket 协议使用的端口与 Web 浏览器(HTTP 和 HTTPS)使用的端口相同,因此 WebSocket 也可通过代理和防火墙进行工作。

为建立 WebSocket 连接,客户端与服务器之间会交换一个基于 HTTP 的特定握手。如果成功,则会使用前面建立的 TCP 连接将应用程序层协议从 HTTP“升级”到 WebSocket。 此后,HTTP 完全被排除在外;这两个终结点均可使用 WebSocket 协议发送或接收数据,直至 WebSocket 连接断开。

要点  除非服务器也使用 WebSocket 协议,否则客户端无法使用 WebSocket 来传输数据。 如果服务器不支持 WebSocket,则必须使用其他数据传输方法。

 

Windows.Networking.Sockets 命名空间提供在 Windows 运行时中对客户端 WebSocket 的支持。桌面版 Windows 8.1 应用同时支持客户端和服务器 WebSocket。

Windows.Networking.Sockets 命名空间在 Windows 运行时应用中定义两种类型的 WebSocket 对象供客户端使用:MessageWebSocketStreamWebSocket。下表描述了这两种类型的 WebSocket。

MessageWebSocket StreamWebSocket
适用于消息不是非常大的典型方案。 适用于将传输大文件(例如照片或电影)的方案。
启用已接收整个 WebSocket 消息的通知。 允许由每个读取操作读取消息的各部分。
支持 UTF-8 和二进制消息。 仅支持二进制消息。
有点与 UDP 套接字相当 (DatagramSocket)。 有点与 TCP 套接字相当 (StreamSocket)。

 

使用带有网络隔离功能的 WebSocket

Windows 运行时中的网络隔离功能使开发人员能够控制和限制 Windows 运行时应用的网络访问。 并非所有的应用都需要访问网络。然而,对于那些需要访问网络的应用,Windows 运行时通过选择适当的功能为这些应用提供不同级别的访问网络。

网络隔离功能允许开发人员为每个应用指定所需的网络访问范围。没有指定相应范围的应用被阻止访问特定类型的网络和特定类型的网络请求(出站客户端发起的请求或未经请求的入站请求和出站客户端发起的请求)。 设置并强制执行网络隔离功能可确保如果一个应用变得具有威胁,则该应用只能访问已明确授权它访问的网络。这大大降低了对其他应用程序和 Windows 的范围影响。

网络隔离功能可影响尝试访问网络的 Windows.Networking.Sockets 命名空间中的任何类元素。 Windows 会主动强制实现网络隔离。如果尚未启用相应的网络功能,则调用 Windows.Networking.Sockets 命名空间中的 MessageWebSocketStreamWebSocket类上的方法,可能会因为网络隔离导致网络访问失败。

在构建应用时,在应用部件清单中配置其网络功能。在开发应用时,通常使用 Microsoft Visual Studio 2013 Update 2 添加网络功能。 也可使用文本编辑器在应用部件清单文件中手动设置网络功能。

有关网络隔离的详细信息,请参阅如何设置网络功能

开发人员受众

以下主题中的示例使用 JavaScript,且基于 WebSocket 示例。 有关创建使用 JavaScript 的 Windows 运行时应用的常规帮助,请参阅使用 JavaScript 的 Windows 运行时应用的路线图

本节内容

主题 描述
如何使用 MessageWebSocket 进行连接

详细介绍了有关使用 MessageWebSocket 向/从 Web 服务器发送/接收数据的要求和具体步骤。

如何使用 StreamWebSocket 进行连接

详细介绍了有关使用 StreamWebSocket 向/从 Web 服务器发送/接收数据的要求和具体步骤。

如何使用高级 WebSocket 控件

介绍了如何使用高级接套字控件来设置 WebSocket 对象上的选项。

如何使用 TLS/SSL 确保 WebSocket 连接的安全

介绍了如何使用传输层安全性 (TLS)/安全套接字层 (SSL) 确保 WebSocket 连接的安全。

 

了解类似功能和相关功能

描述
如何配置网络隔离功能

介绍网络隔离功能,以及如何为 Windows 应用商店应用配置网络隔离功能以全面控制网络访问。

使用套接字进行网络连接

详细介绍了有关使用套接字向/从网络资源发送/接收数据的要求和具体步骤。

添加网络支持

包含有关向应用添加网络支持的信息。

解决网络连接问题并调试

提供建议和信息以帮助解决连接问题。

 

相关主题

其他

使用 JavaScript 的 Windows 运行时应用的路线图

参考

MessageWebSocket

StreamWebSocket

Windows.Networking.Sockets

示例

WebSocket 示例