3. WebSockets Upgrade over HTTP/3 (Aggiornamento WebSocket su HTTP/3)
[RFC8441] definisce un meccanismo per eseguire il protocollo WebSocket (WebSocket Protocol) [RFC6455] su un singolo flusso di una connessione HTTP/2. Definisce un metodo CONNECT esteso (Extended CONNECT method) che specifica un nuovo campo di pseudo-header (pseudo-header field) ":protocol" e nuove semantiche per i campi di pseudo-header ":path" e ":authority". Definisce anche una nuova impostazione HTTP/2 (setting) inviata da un server per consentire al client di utilizzare CONNECT esteso.
Le semantiche dei campi di pseudo-header e dell'impostazione sono identiche a quelle in HTTP/2 come definite in [RFC8441]. L'Appendice A.3 di [HTTP/3] richiede che le impostazioni HTTP/3 siano registrate separatamente per HTTP/3. Il valore SETTINGS_ENABLE_CONNECT_PROTOCOL è 0x08 (decimale 8), come in HTTP/2.
Se un server annuncia il supporto per CONNECT esteso ma riceve una richiesta CONNECT estesa con un valore ":protocol" sconosciuto o non supportato, il server dovrebbe (SHOULD) rispondere alla richiesta con un codice di stato 501 (Not Implemented) (Sezione 15.6.2 di [HTTP]). Un server può (MAY) fornire ulteriori informazioni tramite una risposta "dettagli del problema (problem details)" [RFC7807].
La chiusura del flusso HTTP/3 (stream closure) è anche analoga alla chiusura della connessione TCP di [RFC6455]. Le chiusure ordinate a livello TCP sono rappresentate come un bit FIN sul flusso (Sezione 4.4 di [HTTP/3]). Le eccezioni RST sono rappresentate con un errore di flusso (stream error) (Sezione 8 di [HTTP/3]) di tipo H3_REQUEST_CANCELLED (Sezione 8.1 di [HTTP/3]).