Share via


MessageWebSocket Classe

Definizione

Supporta la comunicazione di rete che consente la lettura e la scrittura di messaggi interi usando un WebSocket.

public ref class MessageWebSocket sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MessageWebSocket final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class MessageWebSocket final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MessageWebSocket : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MessageWebSocket : System.IDisposable
function MessageWebSocket()
Public NotInheritable Class MessageWebSocket
Implements IDisposable
Ereditarietà
Object Platform::Object IInspectable MessageWebSocket
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
Funzionalità dell'app
internetClient privateNetworkClientServer

Commenti

La classe MessageWebSocket fornisce un'astrazione basata su messaggi del protocollo WebSocket. Quando si usa MessageWebSocket, l'intero messaggio WebSocket viene letto o scritto in una singola operazione. Al contrario, StreamWebSocket consente alle sezioni di un messaggio di essere letti con ogni operazione di lettura, anziché richiedere che l'intero messaggio venga letto in una singola operazione.

Per i messaggi UTF-8, messageWebSocket deve essere usato. StreamWebSocket supporta solo i messaggi binari.

Gestione delle eccezioni

È necessario scrivere codice per gestire le eccezioni quando si chiamano metodi asincroni nella classe MessageWebSocket. Le eccezioni possono causare errori di convalida dei parametri, errori di risoluzione dei nomi e errori di rete. Eccezioni da errori di rete (perdita di connettività, errori di connessione e errori del server HTTP, ad esempio) possono verificarsi in qualsiasi momento. Questi errori causano la generazione di eccezioni. Se non gestito dall'app, un'eccezione può causare la chiusura dell'intera app dal runtime.

Lo spazio dei nomi Windows.Networking.Sockets include un metodo helper pratico ed enumerazione per la gestione degli errori durante l'uso di WebSockets. Ciò può risultare utile per gestire specifiche eccezioni di rete in modo diverso nell'app. Un'app può anche usare HRESULT dall'eccezione sugli errori di convalida dei parametri per ottenere informazioni più dettagliate sull'errore che ha causato l'eccezione.

Per altre informazioni sulle possibili eccezioni e su come gestire le eccezioni, vedere Gestione delle eccezioni nelle app di rete.

Uso di MessageWebSocket in Windows Server 2012

In Windows Server 2012 e Windows Server 2012 R2, la Windows.Networking.dll che implementa la maggior parte delle classi nello spazio dei nomi Windows.Networking.Sockets non riuscirà a caricare a meno che non sia abilitata la funzionalità Media Foundation. Di conseguenza, le app che usano MessageWebSocket e le classi WebSocket correlate nello spazio dei nomi Windows.Networking.Sockets avranno esito negativo se la funzionalità Media Foundation è disabilitata. Windows Server 2012 o Windows Server 2012 R2 installa con la funzionalità Media Foundation disabilitata.

La funzionalità Media Foundation può essere abilitata in Windows Server 2012 o Windows Server 2012 R2 usando Server Manager o immettendo il testo seguente in un prompt dei comandi o in uno script:

dism /online /enable-feature /featurename:ServerMediaFoundation Dopo l'abilitazione della funzionalità Media Foundation, viene richiesto di riavviare l'utente. Dopo il riavvio del computer, le classi per socket e WebSocket nello spazio dei nomi Windows.Networking.Sockets funzioneranno come previsto.

Cronologia delle versioni

Versione di Windows Versione dell'SDK Valore aggiunto
1607 14393 ServerCustomValidationRequested
1803 17134 SendFinalFrameAsync
1803 17134 SendNonfinalFrameAsync

Costruttori

MessageWebSocket()

Crea un nuovo oggetto MessageWebSocket .

Proprietà

Control

Ottiene i dati di controllo socket in un oggetto MessageWebSocket .

Information

Ottiene informazioni sul socket su un oggetto MessageWebSocket .

OutputStream

Ottiene il flusso di output da scrivere nella destinazione di rete remota in un oggetto MessageWebSocket .

Metodi

Close()

Chiude l'oggetto MessageWebSocket e invia un frame di chiusura vuoto al server.

Close(UInt16, String)

Chiude l'oggetto MessageWebSocket e indica un motivo per la chiusura.

ConnectAsync(Uri)

Avvia un'operazione asincrona per connettersi a una destinazione di rete remota in un oggetto MessageWebSocket .

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

SendFinalFrameAsync(IBuffer)

In modo asincrono (con stato) scrive un frame di dati in un flusso sequenziale, con la semantica che si tratta dell'ultimo frame in un messaggio WebSocket (il bit FIN in questo frame è impostato su 1). Questo metodo e SendNonfinalFrameAsync consentono di inviare singoli frame WebSocket.

SendNonfinalFrameAsync(IBuffer)

In modo asincrono (con stato) scrive un frame di dati in un flusso sequenziale, con la semantica che più fotogrammi seguiranno per lo stesso messaggio WebSocket (il bit FIN in questo frame è impostato su 0). Questo metodo e SendFinalFrameAsync consentono di inviare singoli frame WebSocket.

SetRequestHeader(String, String)

Aggiunge un'intestazione di richiesta HTTP al messaggio di richiesta HTTP usato nell'handshake del protocollo WebSocket dall'oggetto MessageWebSocket .

Eventi

Closed

Si verifica quando viene ricevuto un frame di chiusura nell'oggetto MessageWebSocket come parte dell'handshake di chiusura.

MessageReceived

Evento che indica che un messaggio è stato ricevuto nell'oggetto MessageWebSocket .

ServerCustomValidationRequested

Si verifica quando viene convalidata una nuova connessione MessageWebSocket a un URI del server protetto (wss: protocol). Gestire questo evento se si vuole implementare la convalida del server personalizzata per la connessione.

Si applica a

Vedi anche