Compartir a través de


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

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. 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.
  4. 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.
    Screenshot of the Application Development list showing WebSocket Protocol selected..
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  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.
  2. Expanda sucesivamente Internet Information Services, World Wide Web Services y Características de desarrollo de aplicaciones y, a continuación, seleccione Protocolo WebSocket.
    Screenshot showing the Application Development Features list with multiple selections and WebSocket Protocol highlighted.
  3. Haga clic en OK.
  4. 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

  1. 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).
  2. 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.

  3. En el panel Inicio, haga doble clic en la característica Editor de configuración.

  4. Para un sitio o una aplicación, seleccione web.config o applicationHost.config en el cuadro de texto Desde.

  5. Seleccione system.webServer/webSocket en el cuadro de texto Sección.

  6. Establezca enabled en True para habilitar webSocket o False para deshabilitar webSocket. Establezca pingInterval y receiveBufferLimit en los valores deseados.

    Screenshot of a portion of the Configuration Editor screen with enabled highlighted.

  7. 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"