Как можем да помогнем?

Кажете накратко за какво става дума - ще се свържем с Вас по имейл.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Към началната страница

Transport: WebSocket, HTTP-fallback en opnieuw verbinden

Hoe de widget met de chatserver communiceert: adressen, subprotocol rc.v1, frameformaat, fout- en sluitcodes, limieten, opnieuw verbinden met seq en deduplicatie en HTTP-fallback via Server-Sent Events en long polling.

Deze pagina beschrijft wat er tussen de widget in de browser en de chatserver gebeurt. U hebt deze informatie nodig voor probleemoplossing (netwerktabblad van de ontwikkelaarstools), voor proxy- en firewallregels en voor uw Content Security Policy.

Belangrijk: het communicatieprotocol is de interface tussen onze widget en onze server. Eigen clients die rechtstreeks het protocol spreken, worden niet officieel ondersteund; velden kunnen binnen protocolversie 1 worden uitgebreid. Gebruik voor uw eigen interfaces de JavaScript-API, voor serverkoppelingen webhooks en de server-API.

Adressen

Hoe de widget het WebSocket-adres vindt:

  1. data-rc-ws-url op de loadertag, window.ReactiveChatSettings.wsUrl of ReactiveChat('boot', { wsUrl }) – indien ingesteld, geldt deze waarde.
  2. Anders wordt het afgeleid van de locatie van loader.js: wss://ws. + de laatste twee delen van de domeinnaam + /rc_wss/. cdn.reactive.chat wordt wss://ws.reactive.chat/rc_wss/.

Hieruit volgen twee valkuilen:

De WebSocket-route verwerkt geen queryparameters.

De verbinding opzetten

Frameformaat

Elk bericht heeft in beide richtingen deze vorm:

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

Onbekende typen en velden worden zonder melding genegeerd — zo blijven oudere widgets compatibel met nieuwere servers.

Berichttypen in één oogopslag

Van de widget naar de server:

Van de server naar de widget:

Foutcodes

Een fout komt binnen als een frame t: "error" met d.code, d.message (Engels, alleen voor ontwikkelaars), d.retry (no, immediate, backoff, after_reinit) en waar nodig d.retry_after_ms en d.detail. De lijst is gesloten; een onbekende code wordt als internal behandeld.

Sluitcodes

Limieten per verbinding

De server stuurt de geldende waarden in init_ok.limits en init_ok.features:

Opnieuw verbinden, volgorde, duplicaten

HTTP-fallback

Als een netwerk WebSocket blokkeert, gaat de chat verder via gewone HTTPS-verzoeken, met dezelfde frames en limieten. Alleen de widget gebruikt dit; de medewerkersinterface maakt altijd via WebSocket verbinding. De korte uitleg voor redacteuren staat onder HTTP-fallback.

Wanneer dit geldt:

Zonder fetch in de browser is er geen fallback. Als een bestaande WebSocket-verbinding wegvalt, maakt de widget via WebSocket opnieuw verbinding. Na een fallback controleert de widget eenmaal per pagina op de achtergrond of WebSocket nu wel doorkomt; zo ja, dan wordt rc_http verwijderd en gebruikt de volgende pagina weer WebSocket.

De verzoeken (onder https://ws.reactive.chat/rc_wss/h/):

De widget probeert eerst SSE; als er binnen 5 seconden geen eerste frame aankomt (bijvoorbeeld door buffering in een proxy), wordt overgeschakeld op long polling. Fouten zoals 404 (unbekannt), 403, 413 of 429 worden behandeld als een weggevallen verbinding, waarna na een wachttijd opnieuw wordt geprobeerd. Na 60 seconden zonder verzoek sluit de server de verbinding. CORS: Access-Control-Allow-Origin neemt de origin over, zonder inloggegevens; de origincontrole vindt plaats in init, net als bij WebSocket.

Vereisten aan uw kant:

Opgeslagen in de browser: alleen de vermelding rc_http in sessionStorage met het tijdstip van de HTTPS-verbinding, zonder persoonsgegevens.

Welke route actief is

Op het netwerktabblad van de ontwikkelaarstools:

Volgende: Limieten en quota · Problemen oplossen

Последна актуализация: