Share via


Como conectar-se com um MessageWebSocket (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 mostrará como enviar e receber mensagens inteiras de dados usando MessageWebSocket em um aplicativo do Tempo de Execução do Windows.

A classe MessageWebSocket fornece uma abstração com base na mensagem do protocolo WebSocket. Ao usar MessageWebSocket, a mensagem WebSocket inteira é lida ou gravada em uma operação única. Em comparação, o StreamWebSocket permite que seções de uma mensagem sejam lidas com cada operação de leitura, em vez de ser necessário uma única operação para ler a mensagem inteira.

Um MessageWebSocket normalmente é usado em cenários nos quais as mensagens não são extremamente grandes. Existe suporte tanto para arquivos UTF-8 quanto para arquivos binários. Para mensagens UTF-8, o MessageWebSocket deve ser usado. Pois o StreamWebSocket suporta somente mensagens binárias.

Pré-requisitos

Os exemplos a seguir usam JavaScript e são baseados na Exemplo de WebSocket. Para obter instruções sobre a criação de um aplicativo do Tempo de Execução do Windows em JavaScript, veja Criar seu primeiro aplicativo do Tempo de Execução do Windows em JavaScript. Além disso, as promessas de JavaScript são usadas neste tópico para concluir as operações assíncronas. Para obter mais informações sobre esse padrão de programação, consulte Programação assíncrona em JavaScript usando promessas.

Para garantir que o aplicativo do Tempo de Execução do Windows esteja pronto para a rede, defina alguns recursos de rede no arquivo Package.appxmanifest do projeto. Se o aplicativo precisa ser capaz de se conectar como um cliente aos serviços remotos na Internet, a capacidade de Internet (Cliente) é necessária. Se o aplicativo precisa ser capaz de se conectar como cliente aos serviços remotos na rede doméstica ou na rede comercial, então a capacidade Rede Doméstica/Comercial é necessária.

Observação  No Windows Phone, há somente um recurso de rede (Internet (Cliente e Servidor)) que habilita todo o acesso de rede para o aplicativo.

 

Para obter mais informações, veja Como definir recursos de rede.

Usar a MessageWebSocket to send data

O código nesta seção cria um novo MessageWebSocket, conecta-se a um servidor WebSocket e envia dados para o servidor. Quando uma conexão é estabelecida com êxito, o aplicativo aguarda a chamada ao evento MessageWebSocket.MessageReceived, indicando que os dados foram recebidos.

Observação  Você pode querer exibir mensagens para o usuário ou registrar que determinados eventos ocorreram (por exemplo, quando uma conexão é efetuada ou quando um erro ocorre).

 

  • Abra a pasta js. Abra o seu arquivo .js e adicione o código a seguir.

    function startSend() {
       if (!messageWebSocket) {
          var webSocket = new Windows.Networking.Sockets.MessageWebSocket();
          // MessageWebSocket supports both utf8 and binary messages.
          // When utf8 is specified as the messageType, then the developer
          // promises to only send utf8-encoded data.
          webSocket.control.messageType = Windows.Networking.Sockets.SocketMessageType.utf8;
          // Set up callbacks
          webSocket.onmessagereceived = onMessageReceived;
          webSocket.onclosed = onClosed;
    
          var serverAddress = new Windows.Foundation.Uri(document.getElementById("serverAddress").value);
    
          try {
             webSocket.connectAsync(serverAddress).done(function () {
             messageWebSocket = webSocket;
             // The default DataWriter encoding is utf8.
             messageWriter = new Windows.Storage.Streams.DataWriter(webSocket.outputStream);
             messageWriter.writeString(document.getElementById("inputField").value);
             messageWriter.storeAsync().done("", sendError);
    
          }, function (error) {
             // The connection failed; add your own code to log or display 
             // the error, or take a specific action.
             });
          } catch (error) {
             // An error occurred while trying to connect; add your own code to  
             // log or display the error, or take a specific action.
          }
    
       }
       else {
          // The connection already exists; go ahead and send the message.
          messageWriter.writeString(document.getElementById("inputField").value);
          messageWriter.storeAsync().done("", sendError);          
       }
    }
    

Registrar o seu retorno de chamada para o evento MessageWebSocket.MessageReceived

Quando o evento MessageWebSocket.MessageReceived ocorre, o retorno de chamada registrado é chamado e recebe dados de MessageWebSocketMessageReceivedEventArgs.

  • Adicione o código a seguir ao seu arquivo .js.

    function onMessageReceived(args) {
       // The incoming message is already buffered.
       var dataReader = args.getDataReader();
       // Use the dataReader to read data from the received message
    }
    

Registrar o seu retorno de chamada para o evento MessageWebSocket.Closed

Quando o evento MessageWebSocket.Closed ocorre, o retorno de chamada registrado é chamado e recebe dados de WebSocketClosedEventArgs para fechar a conexão.

  • Adicione o código a seguir ao seu arquivo .js.

    function onClosed(args) {
       // You can add code to log or display the code and reason
       // for the closure (stored in args.code and args.reason)
       if (messageWebSocket) {
          messageWebSocket.close();
       }
       messageWebSocket = null;
    }
    

Resumo e próximas etapas

Neste tutorial, revisamos como estabelecer conexão com um servidor WebSocket e como enviar e receber dados usando um MessageWebSocket.

Para um exemplo completo que demonstra como enviar e receber dados com WebSockets, veja o Exemplo de WebSocket.

Tópicos relacionados

Outro

Programação assíncrona em JavaScript com promessas

Conectando-se com WebSockets

Crie seu primeiro aplicativo do Tempo de Execução do Windows em JavaScript

Como conectar-se a um StreamWebSocket

Como resolver exceções em aplicativos de rede

Como definir recursos de rede

Referência

MessageWebSocket

Windows.Networking.Sockets

Exemplos

Exemplo de WebSocket