Come connettersi con un MessageWebSocket (HTML)
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
Questo argomento ti mostrerà come inviare e ricevere interi messaggi di dati tramite MessageWebSocket in un'app di Windows Runtime.
La classe MessageWebSocket fornisce un'astrazione basata su messaggio del protocollo WebSocket. Se usi MessageWebSocket, l'intero messaggio WebSocket viene letto o scritto in un'unica operazione. Diversamente, il StreamWebSocket consente di leggere parti di un messaggio durante ciascuna operazione di lettura, anziché leggere l'intero messaggio in un'unica operazione.
Un MessageWebSocket viene tipicamente utilizzato negli scenari che presentano messaggi di dimensioni non eccessive. Sono supportati sia i file UTF-8 che binari. Per i messaggi UTF-8, è necessario usare MessageWebSocket, poiché StreamWebSocket supporta solo messaggi binari.
Prerequisiti
Gli esempi seguenti usano JavaScript e sono basati sull'esempio di WebSocket. Per informazioni generali sulla creazione di un'app di Windows Runtime in JavaScript, vedi Creare la prima app di Windows Runtime in JavaScript. Inoltre, in questo argomento si usano promesse JavaScript per eseguire operazioni asincrone. Per altre informazioni su questo modello di programmazione, vedi Programmazione asincrona in JavaScript con promesse.
Per predisporre la tua app di Windows Runtime per l'uso in rete, devi impostare le eventuali funzionalità di rete necessarie nel file Package.appxmanifest del progetto. Se la tua app deve connettersi come client a servizi remoti su Internet, è necessaria la funzionalità Internet (client). Se l'app deve connettersi come client a servizi remoti su una rete domestica o aziendale, è necessaria la funzionalità Rete casa/lavoro.
Nota In Windows Phone, c'è solo una funzionalità di rete (Internet (client e server)) che consente l'accesso a tutte le reti per l'app.
Per altre informazioni, vedi Come impostare le funzionalità di rete.
Usare MessageWebSocket per l'invio di dati
Il codice mostrato in questa sezione consente di creare un nuovo elemento MessageWebSocket, esegue la connessione a un server WebSocket e inviare i dati al server. Dopo avere stabilito una connessione, l'app attende la chiamata all'evento MessageWebSocket.MessageReceived, che indica la ricezione dei dati.
Nota Potrebbe essere utile visualizzare messaggi all'utente o registrare il verificarsi di determinati eventi, ad esempio quando viene effettuata una connessione o si verifica un errore.
Apri la cartella js. Apri un nuovo file con estensione js e aggiungi il codice seguente.
function startSend() { if (!messageWebSocket) { var webSocket = new Windows.Networking.Sockets.MessageWebSocket(); // MessageWebSocket supports both utf8 and binary messages. // When utf8 is specified as the messageType, then the developer // promises to only send utf8-encoded data. webSocket.control.messageType = Windows.Networking.Sockets.SocketMessageType.utf8; // Set up callbacks webSocket.onmessagereceived = onMessageReceived; webSocket.onclosed = onClosed; var serverAddress = new Windows.Foundation.Uri(document.getElementById("serverAddress").value); try { webSocket.connectAsync(serverAddress).done(function () { messageWebSocket = webSocket; // The default DataWriter encoding is utf8. messageWriter = new Windows.Storage.Streams.DataWriter(webSocket.outputStream); messageWriter.writeString(document.getElementById("inputField").value); messageWriter.storeAsync().done("", sendError); }, function (error) { // The connection failed; add your own code to log or display // the error, or take a specific action. }); } catch (error) { // An error occurred while trying to connect; add your own code to // log or display the error, or take a specific action. } } else { // The connection already exists; go ahead and send the message. messageWriter.writeString(document.getElementById("inputField").value); messageWriter.storeAsync().done("", sendError); } }
Registrare il callback per l'evento MessageWebSocket.MessageReceived
Quando si verifica l'evento MessageWebSocket.MessageReceived, il callback registrato viene chiamato e riceve i dati da MessageWebSocketMessageReceivedEventArgs.
Aggiungi il codice seguente al file con estensione js.
function onMessageReceived(args) { // The incoming message is already buffered. var dataReader = args.getDataReader(); // Use the dataReader to read data from the received message }
Registrare il callback per l'evento MessageWebSocket.Closed
Quando si verifica l'evento MessageWebSocket.Closed, il callback registrato viene chiamato e riceve i dati da WebSocketClosedEventArgs per chiudere la connessione.
Aggiungi il codice seguente al file con estensione js.
function onClosed(args) { // You can add code to log or display the code and reason // for the closure (stored in args.code and args.reason) if (messageWebSocket) { messageWebSocket.close(); } messageWebSocket = null; }
Riepilogo e passaggi successivi
In questa esercitazione abbiamo esaminato come eseguire la connessione a un server WebSocket e come inviare e ricevere dati usando un elemento MessageWebSocket.
Per un esempio completo sull'invio e la ricezione di dati mediante WebSocket, vedi l'esempio di WebSocket.
Argomenti correlati
Altro
Programmazione asincrona in JavaScript con le promesse
Creare la prima app di Windows Runtime in JavaScript
Come connettersi con un StreamWebSocket
Come gestire le eccezioni nelle app di rete
Come impostare le funzionalità di rete
Riferimenti
Esempi