WebSocket <webSocket>
Información general
El elemento <webSocket>
especifica el uso del módulo WebSocketModule con ASP.NET 4.5 para admitir la escritura de aplicaciones de servidor que se comunican a través del protocolo WebSocket. WebSocket permite proporcionar comunicaciones dúplex completas a través de una sola conexión TCP mediante un flujo de mensajes en lugar de un flujo de bytes. Esto facilita la conexión a orígenes de datos de forma asincrónica en implementaciones en la nube.
Compatibilidad
Versión | Notas |
---|---|
IIS 10.0 | El elemento <webSocket> no se modificó en IIS 10.0. |
IIS 8.5 | El elemento <webSocket> no se modificó en IIS 8.5. |
IIS 8.0 | El elemento <webSocket> se introdujo en IIS 8.0. |
IIS 7.5 | N/D |
IIS 7.0 | N/D |
IIS 6,0 | N/D |
Configuración
Windows Server 2012 o Windows Server 2012 R2
- En la barra de tareas, haga clic en Administrador del servidor.
- En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
- En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
- En la página Roles de servidor, expanda Servidor web (IIS), expanda Servidor web, expanda Desarrollo de aplicaciones y, a continuación, seleccione Protocolo WebSocket. Haga clic en Next.
. - En la página Seleccionar características, haz clic en Siguiente.
- En la página Confirmar selecciones de instalación, haga clic en Instalar.
- En la página Resultados , haga clic en Cerrar.
Windows 8 o Windows 8.1
- En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control. - En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
- Expanda sucesivamente Internet Information Services, World Wide Web Services y Características de desarrollo de aplicaciones y, a continuación, seleccione Protocolo WebSocket.
- Haga clic en OK.
- Haga clic en Cerrar.
Procedimientos
Uso de la API IWebSocketContext
Los desarrolladores pueden usar la API IWebSocketContext para crear aplicaciones que implementen comunicaciones bidireccionales y totalmente dúplex entre cliente y servidor, enviando flujos de mensajes en lugar de bytes. La API IWebSocketContext expone las API necesarias para leer y escribir datos de WebSocket.
Si se va a aceptar una solicitud entrante como una solicitud de WebSocket y, posteriormente, actualizarla, el controlador debe establecer el estado de la respuesta como 101. Debe iniciar un IHttpResponse->Flush, que desencadenará el módulo WebSocket de IIS para realizar el trabajo necesario para enviar la respuesta 101 al cliente.
Una vez enviada la respuesta, el controlador puede obtener un puntero al IWebSocketContext a través de la API GetNamedContext de IHttpContext3.
Para más información, vea Interfaz IWebSocketContext.
Configuración de webSocket
Abra el Administrador de Internet Information Services (IIS):
Si usa Windows Server 2012 o versiones posteriores:
- En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
Si usa Windows 8 o versiones posteriores:
- Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
- En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, seleccione el nombre del servidor para configurar WebSocket para el servidor, o expanda Sitios y después seleccione un sitio para configurar WebSocket para el sitio, o expanda un sitio y después seleccione una aplicación para configurar WebSocket para la aplicación.
En el panel Inicio, haga doble clic en la característica Editor de configuración.
Para un sitio o una aplicación, seleccione web.config o applicationHost.config en el cuadro de texto Desde.
Seleccione system.webServer/webSocket en el cuadro de texto Sección.
Establezca
enabled
en True para habilitar webSocket o False para deshabilitar webSocket. Establezca pingInterval y receiveBufferLimit en los valores deseados.Haga clic en Aplicar en el panel Acciones.
Configuración
El elemento <webSocket>
se configura en el nivel de servidor, sitio o aplicación.
Atributos
Atributo | Descripción |
---|---|
enabled |
Atributo Boolean opcional. Permite que las aplicaciones de servidor se comuniquen a través del protocolo WebSocket. El valor predeterminado es true . |
pingInterval |
Atributo timeSpan opcional. Intervalo en el que se envía un ping a través de una conexión de WebSocket. El valor predeterminado es 00:00:00 . |
receiveBufferLimit |
Atributo uint opcional. Tamaño máximo del búfer de recepción para una conexión de WebSocket. El valor predeterminado es 4194304 . |
Elementos secundarios
Ninguno.
Ejemplo de configuración
En el ejemplo siguiente se muestra un elemento <webSocket>.
<system.webServer>
<webSocket
enabled="true"
receiveBufferLimit="4194304"
pingInterval="00:01:00">
</webSocket>
</system.webServer>
Código de ejemplo
El código de ejemplo siguiente configura <webSocket> para un sitio.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/webSocket /enabled:"True" /receiveBufferLimit:"4194304" /pingInterval:"00:00:10" /commit:apphost
Nota:
Debe asegurarse de establecer el parámetro commit en apphost
cuando use AppCmd.exe para configurar estos valores. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection webSocketSection = config.GetSection("system.webServer/webSocket", "Default Web Site");
webSocketSection["enabled"] = true;
webSocketSection["receiveBufferLimit"] = 4194304;
webSocketSection["pingInterval"] = TimeSpan.Parse("00:00:10");
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim webSocketSection As ConfigurationSection = config.GetSection("system.webServer/webSocket", "Default Web Site")
webSocketSection("enabled") = true
webSocketSection("receiveBufferLimit") = 4194304
webSocketSection("pingInterval") = TimeSpan.Parse("00:00:10")
serverManager.CommitChanges
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var webSocketSection = adminManager.GetAdminSection("system.webServer/webSocket", "MACHINE/WEBROOT/APPHOST/Default Web Site");
webSocketSection.Properties.Item("enabled").Value = true;
webSocketSection.Properties.Item("receiveBufferLimit").Value = 4194304;
webSocketSection.Properties.Item("pingInterval").Value = "00:00:10";
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set webSocketSection = adminManager.GetAdminSection("system.webServer/webSocket", "MACHINE/WEBROOT/APPHOST/Default Web Site")
webSocketSection.Properties.Item("enabled").Value = true
webSocketSection.Properties.Item("receiveBufferLimit").Value = 4194303
webSocketSection.Properties.Item("pingInterval").Value = "00:00:20"
adminManager.CommitChanges()
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "receiveBufferLimit" -value 4194303
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "pingInterval" -value "00:00:20"