Passa al contenuto principale

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

  1. Preparare i dati da inviare
  2. Determinare il tipo di frame (Text o Binary)
  3. Se client, generare una chiave di mascheramento e mascherare i dati
  4. Costruire il frame WebSocket
  5. 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:

  1. Leggere l'intestazione del frame
  2. Validare il formato del frame
  3. Se mascherato, smascherare i dati
  4. Elaborare il frame secondo l'Opcode
  5. Se messaggio frammentato, riassemblare il messaggio
  6. 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);
}
};