Aller au contenu principal

6. Sending and Receiving Data (Envoi et réception de données)

6.1 Sending Data (Envoi de données)

Pour envoyer des données via une connexion WebSocket, un endpoint DOIT encapsuler les données dans une trame WebSocket.

Étapes d'envoi

  1. Préparer les données à envoyer
  2. Déterminer le type de trame (Text ou Binary)
  3. Si client, générer une clé de masquage et masquer les données
  4. Construire la trame WebSocket
  5. Envoyer via la connexion TCP sous-jacente

Exemple d'API navigateur

const ws = new WebSocket('wss://example.com/socket');

// Envoyer des données texte
ws.send('Hello, Server!');

// Envoyer des données binaires
const buffer = new ArrayBuffer(8);
ws.send(buffer);

// Envoyer un Blob
const blob = new Blob(['Hello'], { type: 'text/plain' });
ws.send(blob);

6.2 Receiving Data (Réception de données)

Lorsqu'un endpoint reçoit des données, il DOIT les traiter en suivant ces étapes :

  1. Lire l'en-tête de la trame
  2. Valider le format de la trame
  3. Si masquée, démasquer les données
  4. Traiter la trame selon l'Opcode
  5. Si message fragmenté, réassembler le message
  6. Livrer le message complet à la couche application

Exemple d'API navigateur

ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('Texte reçu:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('Binaire reçu:', event.data);
}
};

Liens de référence