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 Locust con Azure Load Testing
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Creare una libreria CSS universale: Cards
Anonimizzare i dati sensibili nei log di Azure Front Door
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Applicare un filtro per recuperare alcune issue di GitHub
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Creare una custom property in GitHub
Utilizzare DeepSeek R1 con Azure AI
Introduzione alle Container Queries
Gestione CSS in Blazor con .NET 9
Creare agenti facilmente con Azure AI Agent Service
I più letti di oggi
- Beta 1 di VS 2005 Enterprise Architect
- Point-in-time restore con gli Azure Storage Blob
- Focus dei tag input con HTML5
- Il nuovo tag nav in HTML5
- Evitare la modalità di risparmio energetico in una Windows Store app
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- AI&ML Conference 2019 - Milano
- Mono 0.12: verso una nuova implementazione di ASP.NET