Como usar controles avançados de WebSocket (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Este tópico explica como usar controles de soquete avançados ao utilizar os recursos MessageWebSocket e StreamWebSocket em um aplicativo do Tempo de Execução do Windows.
O que você precisa saber
Tecnologias
-
Habilita comunicações de rede usando soquetes e WebSockets.
Pré-requisitos
- Os exemplos deste tópico são fornecidos em JavaScript. Recomendamos conhecimento básico em WebSockets.
Visão geral dos controles WebSocket avançados
As classes MessageWebSocket e StreamWebSocket seguem o mesmo modelo para uso de controles avançados. Cada uma das classes primárias acima corresponde a classes relacionadas de acesso a controles avançados:
- MessageWebSocketControl - Fornece controle de soquete da qualidade de serviço em um objeto MessageWebSocket.
- StreamWebSocketControl - Fornece dados de controle de soquete em um objeto StreamWebSocket.
O modelo básico para usar controles avançados é o mesmo para os dois tipos de WebSockets. O assunto abordado a seguir usa StreamWebSocket como exemplo, mas o mesmo processo pode ser usado com um MessageWebSocket.
- Crie um StreamWebSocket.
- Use a propriedade StreamWebSocket.Control para obter a instância StreamWebSocketControl associada a um objeto StreamWebSocket.
- Defina uma propriedade em StreamWebSocketControl para configurar uma opção de soquete avançada.
O aplicativo deve sempre definir a propriedade em StreamWebSocketControl antes de emitir uma operação de conexão. Por causa disso, é melhor definir todas as opções avançadas imediatamente após a criação do soquete. Não tente definir uma propriedade StreamWebSocketControl depois que um soquete chamar o método ConnectAsync.
Controles StreamWebSocket avançados
Há diversas opções avançadas em StreamWebSocket.
- StreamWebSocketControl.NoDelay - Indica se o algoritmo Nagle é usado em um objeto StreamWebSocket.
- StreamWebSocketControl.OutboundBufferSizeInBytes - Controla o tamanho, em bytes, do buffer de envio que será usado para enviar dados em um objeto StreamWebSocket.
- StreamWebSocketControl.ProxyCredential - Fornece a credencial usada para realizar autenticação no servidor proxy por meio do cabeçalho HTTP usando um objeto StreamWebSocket.
- StreamWebSocketControl.ServerCredential - Fornece a credencial usada para realizar autenticação no WebSocket por meio do cabeçalho HTTP usando um objeto StreamWebSocket .
- StreamWebSocketControl.SupportedProtocols - Obtém uma coleção que pode ser usada para adicionar uma lista de sub-protocolos suportados que serão divulgados no servidor durante o handshake de conexão.
Como exemplo, vejamos a opção StreamWebSocketControl.NoDelay com mais detalhes. Quando um StreamWebSocket é criado, a configuração padrão estabelece que essa opção seja definida como true, desativando o algoritmo Nagle. Porém se o StreamWebSocket for usado para um aplicativo que envia muitos pacotes de e-mail e cuja latência não seja um problema, o algoritmo de Nagle poderá ser habilitado configurando StreamWebSocketControl.NoDelay como false para reduzir o tráfego da rede.
O exemplo a seguir cria um StreamWebSocket e define o StreamWebSocketControl.NoDelay como false. Quando isso é feito, o aplicativo pode conectar o 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 MessageWebSocket avançados
Muitas das opções avançadas no MessageWebSocket são as mesmas do StreamWebSocket, com algumas diferenças.
- MessageWebSocketControl.MaxMessageSize - Controla o tamanho máximo, em bytes, de uma mensagem do WebSocket que será configurada no objeto MessageWebSocket.
- MessageWebSocketControl.MessageType - Controla o tipo de mensagem do WebSocket (binária ou UTF-8) que será configurada em um objeto MessageWebSocket.
- MessageWebSocketControl.OutboundBufferSizeInBytes - Controla o tamanho, em bytes, do buffer de envio que será usado para enviar dados em um objeto MessageWebSocket.
- MessageWebSocketControl.ProxyCredential - Fornece a credencial usada para realizar autenticação no servidor proxy por meio do cabeçalho HTTP usando um objeto MessageWebSocket.
- MessageWebSocketControl.ServerCredential - Fornece a credencial usada para realizar autenticação no WebSocket por meio do cabeçalho HTTP usando um objeto MessageWebSocket .
- MessageWebSocketControl.SupportedProtocols - Obtém uma coleção que pode ser usada para adicionar uma lista de sub-protocolos suportados que serão divulgados no servidor durante o handshake de conexão.
Essencialmente, a definição das opções em um MessageWebSocket é feita do mesmo modo que nos exemplos anteriores.
Comentários
Além de controlar dados, um conjunto semelhante de classes relacionadas fornece acesso a mais informações sobre essas classes primárias:
- MessageWebSocketInformation - Fornece informações de soquete sobre um objeto MessageWebSocket.
- StreamWebSocketInformation - Fornece informações de soquete sobre um objeto StreamWebSocket.
Essas classes têm propriedades que fornecem mais informações sobre o soquete.
Tópicos relacionados
Outro
Como conectar-se com um MessageWebSocket
Como conectar-se com um StreamWebSocket
Como proteger conexões WebSocket com TLS/SSL
Referência
Exemplos