6. Sending and Receiving Data (Senden und Empfangen von Daten)
6.1 Sending Data (Senden von Daten)
Um Daten über eine WebSocket-Verbindung zu senden, MUSS ein Endpoint die Daten in einem WebSocket-Frame kapseln.
Sendeschritte
- Zu sendende Daten vorbereiten
- Frame-Typ bestimmen (Text oder Binary)
- Wenn Client, Maskierungsschlüssel generieren und Daten maskieren
- WebSocket-Frame konstruieren
- Über die zugrunde liegende TCP-Verbindung senden
Browser-API-Beispiel
const ws = new WebSocket('wss://example.com/socket');
// Textdaten senden
ws.send('Hello, Server!');
// Binärdaten senden
const buffer = new ArrayBuffer(8);
ws.send(buffer);
// Blob senden
const blob = new Blob(['Hello'], { type: 'text/plain' });
ws.send(blob);
6.2 Receiving Data (Empfangen von Daten)
Wenn ein Endpoint Daten empfängt, MUSS er sie gemäß folgenden Schritten verarbeiten:
- Frame-Header lesen
- Frame-Format validieren
- Falls maskiert, Daten entmaskieren
- Frame gemäß Opcode verarbeiten
- Bei fragmentierter Nachricht Nachricht reassemblieren
- Vollständige Nachricht an Anwendungsschicht ausliefern
Browser-API-Beispiel
ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('Text empfangen:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('Binär empfangen:', event.data);
}
};
Referenzlinks
- Vorheriges Kapitel: 5. Data Framing (Daten-Framing)
- Nächstes Kapitel: 7. Closing the Connection (Verbindung schließen)