Wie können wir helfen?

Schreib uns kurz, worum es geht - wir melden uns per E-Mail.

Diese Seite ist durch reCAPTCHA geschützt. Es gelten die Datenschutzerklärung und die Nutzungsbedingungen von Google.
Zur Startseite

Transport: WebSocket, HTTP-Rückfall und Wiederverbinden

Wie das Widget mit dem Chat-Server spricht – Adressen, Subprotokoll rc.v1, Rahmenformat, Fehler- und Close-Codes, Grenzen, Wiederverbinden mit seq und Deduplizierung sowie der HTTP-Rückfall über Server-Sent Events und Long-Polling.

Diese Seite beschreibt, was zwischen dem Widget im Browser und dem Chat-Server passiert. Du brauchst sie zur Fehlersuche (Netzwerk-Reiter der Entwicklerwerkzeuge), für Proxy- und Firewall-Freigaben und für deine Content-Security-Policy.

Wichtig: Das Wire-Protokoll ist die Schnittstelle zwischen unserem Widget und unserem Server. Eigene Clients, die das Protokoll direkt sprechen, sind nicht offiziell unterstützt; Felder können sich innerhalb der Protokollversion 1 erweitern. Für eigene Oberflächen nutze die JavaScript-API, für Server-Anbindungen Webhooks und die Server-API.

Adressen

Wie das Widget die WebSocket-Adresse findet:

  1. data-rc-ws-url am Loader-Tag, window.ReactiveChatSettings.wsUrl oder ReactiveChat('boot', { wsUrl }) – wenn gesetzt, gilt dieser Wert.
  2. Sonst wird sie aus dem Ort von loader.js abgeleitet: wss://ws. + die letzten zwei Labels der Domain + /rc_wss/. Aus cdn.reactive.chat wird wss://ws.reactive.chat/rc_wss/.

Daraus folgen zwei Fallen:

Query-Parameter wertet die WebSocket-Strecke nicht aus.

Verbindungsaufbau

Rahmenformat

Jede Nachricht in beide Richtungen hat diese Form:

{ "v": 1, "t": "msg", "id": "01JAB3C4D5E6F7G8H9JKMNPQRS", "ts": 1792500000000, "d": { } }

Unbekannte Typen und unbekannte Felder werden still ignoriert – so bleiben ältere Widgets mit neueren Servern verträglich.

Nachrichtentypen im Überblick

Vom Widget zum Server:

Vom Server zum Widget:

Fehlercodes

Ein Fehler kommt als Rahmen t: "error" mit d.code, d.message (englisch, nur für Entwickler), d.retry (no, immediate, backoff, after_reinit) und bei Bedarf d.retry_after_ms und d.detail. Die Liste ist geschlossen; ein unbekannter Code wird wie internal behandelt.

Close-Codes

Grenzen je Verbindung

Die verbindlichen Werte schickt der Server in init_ok.limits und init_ok.features:

Wiederverbinden, Reihenfolge, Duplikate

HTTP-Rückfall

Lässt ein Netz keinen WebSocket durch, läuft der Chat über gewöhnliche HTTPS-Anfragen weiter – mit denselben Rahmen und denselben Grenzen. Nur das Widget nutzt ihn; die Agentenoberfläche verbindet sich immer per WebSocket. Die Kurzfassung für Redakteure steht unter HTTP-Rückfall.

Wann er greift:

Ohne fetch im Browser gibt es keinen Rückfall. Bricht eine bestehende WebSocket-Verbindung ab, verbindet das Widget wieder per WebSocket. Nach einem Rückfall prüft es einmal je Seite still, ob ein WebSocket inzwischen durchkommt; gelingt das, löscht es rc_http, und die nächste Seite nimmt wieder den WebSocket.

Die Anfragen (unter https://ws.reactive.chat/rc_wss/h/):

Das Widget versucht zuerst SSE; kommt binnen 5 Sekunden kein erster Rahmen (etwa weil ein Proxy puffert), wechselt es auf Long-Polling. Fehler wie 404 (unbekannt), 403, 413 oder 429 behandelt es wie einen Verbindungsabbruch und versucht es mit Wartezeit erneut. Nach 60 Sekunden ohne Abruf schließt der Server die Verbindung. CORS: Access-Control-Allow-Origin spiegelt die Herkunft, ohne Credentials; die Herkunftsprüfung findet wie beim WebSocket im init statt.

Voraussetzungen auf deiner Seite:

Im Browser gespeichert: nur der Eintrag rc_http im sessionStorage mit dem Zeitpunkt des HTTPS-Aufbaus, ohne personenbezogene Daten.

Welcher Weg aktiv ist

Im Netzwerk-Reiter der Entwicklerwerkzeuge:

Weiter: Grenzen und Quoten · Fehlerbehebung

Stand: