WebSocket <webSocket>

Visão geral

O elemento <webSocket> especifica o uso do módulo WebSocketModule com o ASP.NET 4.5 para dar suporte à gravação de aplicativos de servidor que se comunicam pelo Protocolo WebSocket. O WebSocket permite que você forneça comunicações completas duplex em uma única conexão TCP usando um fluxo de mensagens em vez de um fluxo de bytes. Isso facilita a conexão com fontes de dados de forma assíncrona em implantações de nuvem.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <webSocket> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <webSocket> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <webSocket> foi introduzido no IIS 8.0.
IIS 7.5 N/D
IIS 7.0 N/D
IIS 6,0 N/D

Instalação

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
  4. Na página Funções do Servidor, expanda Servidor Web (IIS), Servidor Web e Desenvolvimento de Aplicativos e, em seguida selecione Protocolo WebSocket. Clique em Avançar.
    Screenshot of the Application Development list showing WebSocket Protocol selected. .
  5. Na página Selecionar Recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  2. Expanda Serviços de Informações da Internet, Serviços da World Wide Web, Recursos de Desenvolvimento de Aplicativos e, em seguida, selecione Protocolo WebSocket.
    Screenshot showing the Application Development Features list with multiple selections and WebSocket Protocol highlighted.
  3. Clique em OK.
  4. Clique em Fechar.

Instruções

Como usar a API IWebSocketContext

Os desenvolvedores podem usar a API IWebSocketContext para criar aplicativos que implementam comunicações bidirecionais e totalmente duplex entre cliente e servidor, enviando fluxos de mensagens em vez de bytes. A API IWebSocketContext expõe as APIs necessárias para ler/gravar dados do WebSocket.

Se uma solicitação de entrada for aceita como uma solicitação WebSocket e posteriormente atualizada, o manipulador deverá definir o status da resposta como 101. Ela deve iniciar um IHttpResponse->Flush, que disparará o módulo WebSocket do IIS para fazer o trabalho necessário para enviar a resposta 101 ao cliente.

Depois que a resposta for enviada, o manipulador poderá obter um ponteiro para o IWebSocketContext por meio da API GetNamedContext do IHttpContext3.

Para obter mais informações, consulte Interface IWebSocketContext.

Como configurar o webSocket

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Se você estiver usando o Windows Server 2012 ou posterior:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou versões posteriores:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, selecione o nome do servidor para configurar o WebSocket para o servidor ou expanda Sites e selecione um site para configurar o WebSocket para o site ou expanda um site e selecione um aplicativo para configurar o WebSocket para o aplicativo.

  3. No painel Página Inicial, clique duas vezes no recurso Editor de Configuração.

  4. Para um site ou um aplicativo, selecione web.config ou applicationHost.config na caixa de texto De.

  5. Selecione system.webServer/webSocket na caixa de texto Seção.

  6. Defina enabled como true para habilitar o webSocket ou false para desabilitar o webSocket. Defina pingInterval e receiveBufferLimit para os valores desejados.

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

  7. Clique em Aplicar no painel Ações.

Configuração

O elemento <webSocket> é configurado no nível do servidor, do site ou do aplicativo.

Atributos

Atributo Descrição
enabled Atributo booliano opcional.

Permite que os aplicativos de servidor se comuniquem pelo protocolo WebSocket.

O valor padrão é true.
pingInterval Atributo timeSpan opcional.

O intervalo no qual um ping é enviado por uma conexão WebSocket.

O valor padrão é 00:00:00.
receiveBufferLimit Atributo uint opcional.

O tamanho máximo do buffer de recebimento para uma conexão WebSocket.

O valor padrão é 4194304.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo a seguir exibe um elemento <webSocket>.

<system.webServer>
   <webSocket
      enabled="true" 
      receiveBufferLimit="4194304"
      pingInterval="00:01:00">
   </webSocket>
</system.webServer>

Exemplo de código

O código de exemplo a seguir configura <webSocket> para um site.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webSocket /enabled:"True" /receiveBufferLimit:"4194304" /pingInterval:"00:00:10"  /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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"