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
Utilizzare l nesting nativo dei CSS
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Path addizionali per gli asset in ASP.NET Core MVC
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Generare un hash con SHA-3 in .NET
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Configurare e gestire sidecar container in Azure App Service
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Usare il colore CSS per migliorare lo stile della pagina
Recuperare App Service cancellati su Azure
Gestione dell'annidamento delle regole dei layer in CSS
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL