Usare WebSocket per una comunicazione bidirezionale e real-time con un server nelle Universal App

di Alessio Leoncini, in WinRT 8.1,

Nelle Universal App possiamo creare una comunicazione in tempo reale con un server grazie al protocollo WebSocket e le classi presenti nel namespace Window.Networking.Sockets.

La prima operazione è aprire la connessione con un'istanza di MessageWebSocket e il suo metodo ConnectAsync, a cui passare l'URI del server.

var socket = new MessageWebSocket();
socket.Control.MessageType = SocketMessageType.Utf8;
socket.MessageReceived += MessageReceived;
Uri server = new Uri("ws://localhost/WebSocketSample/Sample.ashx");
await socket.ConnectAsync(server);

Grazie all'evento MessageReceived possiamo intercettare l'invio di un messaggio dal server e recuperare il testo in esso contenuto.

private void MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args)
{
  try
  {
    using (DataReader reader = args.GetDataReader())
    {
      reader.UnicodeEncoding = UnicodeEncoding.Utf8;
      var msg = reader.ReadString(reader.UnconsumedBufferLength);
    }
  }
  catch (Exception ex)
  {
    WebErrorStatus status = WebSocketError.GetStatus(ex.GetBaseException().HResult);
  }
}

Inviare un messaggio è altrettanto semplice attraverso la proprietà OutputStream:

var messageWriter = new DataWriter(socket.OutputStream);
messageWriter.WriteString("testo del messaggio");
await messageWriter.StoreAsync();

Il protocollo WebSocket è semplice e al tempo stesso molto versatile e permette uno scambio di dati tra client e server in modo molto performante.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi