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
- Préparer les données à envoyer
- Déterminer le type de trame (Text ou Binary)
- Si client, générer une clé de masquage et masquer les données
- Construire la trame WebSocket
- 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 :
- Lire l'en-tête de la trame
- Valider le format de la trame
- Si masquée, démasquer les données
- Traiter la trame selon l'Opcode
- Si message fragmenté, réassembler le message
- 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
- Chapitre précédent: 5. Data Framing (Tramage des données)
- Chapitre suivant: 7. Closing the Connection (Fermeture de la connexion)