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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Estrarre dati randomici da una lista di oggetti in C#
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare Tailwind CSS all'interno di React: installazione
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Creare un webhook in Azure DevOps
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Utilizzare un service principal per accedere a Azure Container Registry
Creare un'applicazione React e configurare Tailwind CSS
Gestire i dati con Azure Cosmos DB Data Explorer
Gestire il colore CSS con HWB
Creare gruppi di client per Event Grid MQTT