如何使用高级 WebSocket 控件 (HTML)

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

本主题介绍了在 Windows 运行时应用中使用 MessageWebSocketStreamWebSocket 功能时,如何使用高级套接字控件。

你需要了解的内容

技术

先决条件

  • 本主题中的示例以 JavaScript 语言提供。建议对 WebSocket 有一个基本的了解。

高级 WebSocket 控件概述

MessageWebSocketStreamWebSocket 类在使用高级控件时遵循相同的模型。与上述主类对应的是访问高级控件的相关类:

使用高级控件的基本模式对于两类 WebSocket 是相同的。 以下讨论以 StreamWebSocket 为示例,但对于 MessageWebSocket 也可以使用同样的过程。

应用必须总是在发出连接操作之前设置 StreamWebSocketControl 上的属性。因此,最好是在创建套接字之后立即设置高级选项。请勿在套接字已调用 ConnectAsync 方法之后尝试设置 StreamWebSocketControl 属性。

高级 StreamWebSocket 控件

StreamWebSocket 上有数个高级选项。

让我们来详细了解 StreamWebSocketControl.NoDelay 选项,并以该选项作为示例。创建了 StreamWebSocket 时,该选项的默认设置为 true,这会禁用 Nagle 算法。但是,如果为发送许多小数据包的应用使用 StreamWebSocket,并且延迟不是问题,则可通过将 StreamWebSocketControl.NoDelay 设置为 false 来启用 Nagle 算法,从而减少网络流量。

以下示例将会创建一个 StreamWebSocket 并将 StreamWebSocketControl.NoDelay 设置为 false。一旦此操作完成,该应用即可连接 StreamWebSocket

    var clientWebSocket = new Windows.Networking.Sockets.StreamWebSocket();

    // Get the current setting for this option
    // This isn't required, but it shows how to get the current setting
    var currentSetting = clientWebSocket.control.noDelay; 

    // Set noDelay to false so that the Nagle algorithm isn't disabled
    clientWebSocket.control.noDelay = false;
   
    // Now you can call the ConnectAsync method to connect the StreamWebSocket.

高级 MessageWebSocket 控件

MessageWebSocket 上的许多高级选项与 StreamWebSocket 上的高级选项相同,但也存在一些差异。

MessageWebSocket 的选项设置过程与上例相同。

备注

除了控件数据之外,你还可以通过一组相似的相关类来访问上述主类的其他信息:

这些类的一些属性提供了套接字的其他信息。

相关主题

其他

使用 WebSocket 进行连接

如何使用 MessageWebSocket 进行连接

如何使用 StreamWebSocket 进行连接

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

参考

MessageWebSocket

StreamWebSocket

Windows.Networking.Sockets

示例

WebSocket 示例