Cómo usar controles avanzados de WebSocket (HTML)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
En este tema, se explica cómo usar controles de sockets avanzados cuando se usan las características MessageWebSocket y StreamWebSocket en una aplicación de Windows en tiempo de ejecución.
Lo que debes saber
Tecnologías
-
Permite entablar comunicaciones de red mediante sockets y WebSockets.
Requisitos previos
- En los ejemplos de este tema se utiliza JavaScript. Recomendamos tener conocimientos básicos de WebSockets.
Introducción a los controles avanzados de WebSocket
Las clases MessageWebSocket y StreamWebSocket siguen el mismo modelo a la hora de usar controles avanzados. En correspondencia con cada una de las clases principales mencionadas antes hay clases relacionadas para acceder a los controles avanzados:
- MessageWebSocketControl: ofrece control de socket de la calidad de servicio en un objeto MessageWebSocket.
- StreamWebSocketControl: ofrece datos de control de socket en un objeto StreamWebSocket.
El modelo básico para usar controles avanzados es el mismo para ambos tipos de WebSockets. En el siguiente ejemplo, usaremos StreamWebSocket, pero puede usarse el mismo proceso con MessageWebSocket.
- Crea un StreamWebSocket.
- Usa la propiedad StreamWebSocket.Control para obtener la instancia StreamWebSocketControl asociada con un objeto StreamWebSocket.
- Configura una propiedad en el StreamWebSocketControl para establecer una opción de socket avanzada.
La aplicación debe establecer siempre la propiedad en el StreamWebSocketControl antes de emitir una operación de conexión. Por eso, es mejor establecer las opciones avanzadas inmediatamente después de crear el socket. No intentes establecer una propiedad StreamWebSocketControl después de que un socket haya llamado al método ConnectAsync.
Controles avanzados de StreamWebSocket
Hay varias opciones avanzadas en el StreamWebSocket.
- StreamWebSocketControl.NoDelay: indica si el algoritmo de Nagle se usa en un objeto StreamWebSocket.
- StreamWebSocketControl.OutboundBufferSizeInBytes: controla el tamaño, en bytes, del búfer de envío que se usa para enviar datos en un objeto StreamWebSocket.
- StreamWebSocketControl.ProxyCredential: proporciona la credencial que se usa para autenticar en el servidor proxy mediante la autenticación de encabezado HTTP, con StreamWebSocket.
- StreamWebSocketControl.ServerCredential: proporciona la credencial que se usa para autenticar en el servidor WebSocket mediante la autenticación de encabezado HTTP, con StreamWebSocket.
- StreamWebSocketControl.SupportedProtocols: obtiene una colección que puede usarse para agregar una lista de subprotocolos compatibles que se anunciarán en el servidor durante la conexión del protocolo de enlace.
Como ejemplo, observemos la opción StreamWebSocketControl.NoDelay más detalladamente. La configuración predeterminada cuando se crea un StreamWebSocket es establecer esta opción en true, lo que deshabilita el algoritmo de Nagle. No obstante, si una aplicación que envía varios paquetes pequeños usará el StreamWebSocket y la latencia no es un problema, entonces el algoritmo Nagle podría habilitarse si se establece StreamWebSocketControl.NoDelay en false para reducir el tráfico de red.
El siguiente ejemplo crea un StreamWebSocket y establece StreamWebSocketControl.NoDelay en false. Una vez hecho esto, la aplicación puede conectarse con 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.
Controles avanzados de MessageWebSocket
Muchas de las opciones avanzadas de MessageWebSocket son las mismas que para StreamWebSocket, pero hay algunas diferencias.
- MessageWebSocketControl.MaxMessageSize: controla el tamaño máximo del mensaje, en bytes, de un mensaje WebSocket que se va a configurar en el objeto MessageWebSocket.
- MessageWebSocketControl.MessageType: controla el tipo de mensaje WebSocket (binario o UTF-8) que se va a configurar en un objeto MessageWebSocket.
- MessageWebSocketControl.OutboundBufferSizeInBytes: controla el tamaño, en bytes, del búfer de envío que se usa para enviar datos en un objeto MessageWebSocket.
- MessageWebSocketControl.ProxyCredential: proporciona la credencial que se usa para autenticar en el servidor proxy mediante la autenticación de encabezado HTTP, con un objeto MessageWebSocket.
- MessageWebSocketControl.ServerCredential: proporciona la credencial que se usa para autenticar en el servidor WebSocket mediante la autenticación de encabezado HTTP, con MessageWebSocket.
- MessageWebSocketControl.SupportedProtocols: obtiene una colección que puede usarse para agregar una lista de subprotocolos compatibles que se anunciarán en el servidor durante la conexión del protocolo de enlace.
La configuración de las opciones en un MessageWebSocket se realiza de manera muy similar al ejemplo anterior.
Observaciones
Además de controlar datos, un conjunto similar de clases relacionadas proporcionan acceso a información adicional sobre estas clases principales.
- MessageWebSocketInformation: ofrece información de socket en un objeto MessageWebSocket.
- StreamWebSocketInformation: ofrece información de socket en un objeto StreamWebSocket.
Estas clases tienen propiedades que proporcionan información adicional sobre el socket.
Temas relacionados
Otros
Cómo conectar con un MessageWebSocket
Cómo conectar con un StreamWebSocket
Cómo proteger conexiones WebSocket con TLS/SSL
Referencia
Muestras