6. Sending and Receiving Data (Invio e ricezione di dati)
6.1 Sending Data (Invio di dati)
Per inviare dati tramite una connessione WebSocket, un endpoint DEVE incapsulare i dati in un frame WebSocket.
Passaggi di invio
- Preparare i dati da inviare
- Determinare il tipo di frame (Text o Binary)
- Se client, generare una chiave di mascheramento e mascherare i dati
- Costruire il frame WebSocket
- Inviare tramite la connessione TCP sottostante
Esempio di API del browser
const ws = new WebSocket('wss://example.com/socket');
// Inviare dati di testo
ws.send('Hello, Server!');
// Inviare dati binari
const buffer = new ArrayBuffer(8);
ws.send(buffer);
// Inviare Blob
const blob = new Blob(['Hello'], { type: 'text/plain' });
ws.send(blob);
6.2 Receiving Data (Ricezione di dati)
Quando un endpoint riceve dati, DEVE elaborarli seguendo questi passaggi:
- Leggere l'intestazione del frame
- Validare il formato del frame
- Se mascherato, smascherare i dati
- Elaborare il frame secondo l'Opcode
- Se messaggio frammentato, riassemblare il messaggio
- Consegnare il messaggio completo al livello applicazione
Esempio di API del browser
ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('Testo ricevuto:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('Binario ricevuto:', event.data);
}
};
Link di riferimento
- Capitolo precedente: 5. Data Framing (Incorniciamento dei dati)
- Capitolo successivo: 7. Closing the Connection (Chiusura della connessione)