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
Effettuare il binding di date in Blazor
Implementare il throttling in ASP.NET Core
Reactive form tipizzati con modellazione del FormBuilder in Angular
Specificare il versioning nel path degli URL in ASP.NET Web API
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Usare il versioning con i controller di ASP.NET Core Web API
Criptare la comunicazione con mTLS in Azure Container Apps
Sostituire la GitHub Action di login su private registry
Eseguire attività con Azure Container Jobs
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Utilizzare QuickGrid di Blazor con Entity Framework
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- ASP 3 per esempi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2