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
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- 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.
- 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.
. - Na página Selecionar Recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.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.
- 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.
- Clique em OK.
- 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
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).
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.
No painel Página Inicial, clique duas vezes no recurso Editor de Configuração.
Para um site ou um aplicativo, selecione web.config ou applicationHost.config na caixa de texto De.
Selecione system.webServer/webSocket na caixa de texto Seção.
Defina
enabled
como true para habilitar o webSocket ou false para desabilitar o webSocket. Defina pingInterval e receiveBufferLimit para os valores desejados.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"