Come usare i controlli avanzati WebSocket (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 illustra come usare i controlli avanzati dei socket con le funzionalità MessageWebSocket e StreamWebSocket in un'app di Windows Runtime.
Cosa sapere
Tecnologie
-
Consente la comunicazione in rete mediante socket e WebSocket.
Prerequisiti
- Gli esempi contenuti in questo argomento sono scritti in JavaScript. È consigliabile una conoscenza di base di WebSocket.
Panoramica sui controlli WebSocket avanzati
Le classi MessageWebSocket e StreamWebSocket seguono tutte lo stesso modello per l'uso dei controlli avanzati. Ad ognuna delle classi principali menzionate sopra corrispondono classi correlate per l'accesso ai controlli avanzati:
- MessageWebSocketControl: fornisce il controllo della qualità del servizio dei socket su un oggetto MessageWebSocket.
- StreamWebSocketControl: fornisce dati di controllo dei socket su un oggetto StreamWebSocket.
Il modello di base per l'uso di controlli avanzati è identico per entrambi i tipi di WebSocket. Nell'esempio seguente viene usata la classe StreamWebSocket, ma lo stesso processo può essere usato con la classe MessageWebSocket.
- Crea un oggetto StreamWebSocket.
- Usa la proprietà StreamWebSocket.Control per ottenere l'istanza StreamWebSocketControl associata a un oggetto StreamWebSocket.
- Imposta una proprietà sull'oggetto StreamWebSocketControl per impostare un'opzione socket avanzata.
L'app deve sempre impostare la proprietà su StreamWebSocketControl prima di eseguire un'operazione di connessione. Per questo motivo, è preferibile impostare le opzioni avanzate immediatamente dopo la creazione del socket. Non provare a impostare una proprietà StreamWebSocketControl dopo che il socket ha chiamato il metodo ConnectAsync.
Controlli StreamWebSocket avanzati
Sono disponibili diverse opzioni avanzate per StreamWebSocket.
- StreamWebSocketControl.NoDelay: indica se viene usato l'algoritmo di Nagle su un oggetto StreamWebSocket.
- StreamWebSocketControl.OutboundBufferSizeInBytes: controlla le dimensioni, in byte, del buffer di invio da usare per inviare dati su un oggetto StreamWebSocket.
- StreamWebSocketControl.ProxyCredential: fornisce le credenziali da usare per eseguire l'autenticazione nel server proxy tramite l'autenticazione dell'intestazione HTTP con un oggetto StreamWebSocket.
- StreamWebSocketControl.ServerCredential: fornisce le credenziali da usare per eseguire l'autenticazione nel server WebSocket tramite l'autenticazione dell'intestazione HTTP con un oggetto StreamWebSocket.
- StreamWebSocketControl.SupportedProtocols: recupera una raccolta utilizzabile per aggiungere un elenco dei sottoprotocolli supportati che verrà annunciato al server durante l'handshake di connessione.
Per un esempio, esaminiamo in maggior dettaglio l'opzione StreamWebSocketControl.NoDelay. Per impostazione predefinita, quando viene creato un oggetto StreamWebSocket, questa opzione è impostata su true per disabilitare l'algoritmo di Nagle. Se tuttavia l'oggetto StreamWebSocket deve essere usato per un'app che invia numerosi piccoli pacchetti e la latenza non costituisce un problema, è possibile abilitare l'algoritmo di Nagle impostando l'oggetto StreamWebSocketControl.NoDelay su false per ridurre il traffico di rete.
L'esempio seguente crea un StreamWebSocket e imposta StreamWebSocketControl.NoDelay su false. Al termine, l'app può connettersi a StreamWebSocket
var clientWebSocket = new Windows.Networking.Sockets.StreamWebSocket();
// Get the current setting for this option
// This isn't required, but it shows how to get the current setting
var currentSetting = clientWebSocket.control.noDelay;
// Set noDelay to false so that the Nagle algorithm isn't disabled
clientWebSocket.control.noDelay = false;
// Now you can call the ConnectAsync method to connect the StreamWebSocket.
Controlli MessageWebSocket avanzati
Molte delle opzioni avanzate di MessageWebSocket sono identiche a quelle di StreamWebSocket, ma esistono alcune differenze.
- MessageWebSocketControl.MaxMessageSize: controlla le dimensioni massime, in byte, per i messaggi WebSocket da configurare sull'oggetto MessageWebSocket.
- MessageWebSocketControl.MessageType: controlla il tipo di messaggio WebSocket (binario o UTF-8) da configurare su un oggetto MessageWebSocket.
- MessageWebSocketControl.OutboundBufferSizeInBytes: controlla le dimensioni, in byte, del buffer di invio da usare per inviare dati su un oggetto MessageWebSocket.
- MessageWebSocketControl.ProxyCredential: fornisce le credenziali da usare per eseguire l'autenticazione nel server proxy tramite l'autenticazione dell'intestazione HTTP con un oggetto MessageWebSocket.
- MessageWebSocketControl.ServerCredential: fornisce le credenziali da usare per eseguire l'autenticazione nel server WebSocket tramite l'autenticazione dell'intestazione HTTP con un oggetto MessageWebSocket.
- MessageWebSocketControl.SupportedProtocols: recupera una raccolta utilizzabile per aggiungere un elenco dei sottoprotocolli supportati che verrà annunciato al server durante l'handshake di connessione.
L'impostazione delle opzioni su MessageWebSocket viene eseguita in modo quasi identico all'esempio precedente.
Osservazioni
Oltre ai dati di controllo, un set di classi correlate simili fornisce l'accesso ad altre informazioni in queste classi primarie:
- MessageWebSocketInformation: fornisce informazioni relative ai socket su un oggetto MessageWebSocket.
- StreamWebSocketInformation: fornisce informazioni relative ai socket su un oggetto StreamWebSocket.
Queste classi hanno proprietà che forniscono altre informazioni sul socket.
Argomenti correlati
Altro
Come connettersi con un MessageWebSocket
Come connettersi con un StreamWebSocket
Come proteggere le connessioni WebSocket con TLS/SSL
Riferimento
Esempi