چطور می‌توانیم کمک کنیم؟

کوتاه بفرمایید موضوع چیست؛ از طریق ایمیل با شما تماس می‌گیریم.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
رفتن به صفحه اصلی

Přenos: WebSocket, záloha přes HTTP a opětovné připojení

Jak widget komunikuje se serverem chatu – adresy, podprotokol rc.v1, formát rámců, chybové kódy a kódy uzavření, limity, opětovné připojení se seq a deduplikací a záloha přes HTTP pomocí Server-Sent Events a long pollingu.

Tato stránka popisuje, co se děje mezi widgetem v prohlížeči a serverem chatu. Potřebujete ji při řešení problémů (karta síťových požadavků ve vývojářských nástrojích), pro pravidla proxy a firewallu a pro svou Content Security Policy.

Důležité: komunikační protokol je rozhraním mezi naším widgetem a naším serverem. Vlastní klienti komunikující přímo tímto protokolem nejsou oficiálně podporováni; pole se mohou v rámci verze protokolu 1 rozšiřovat. Pro vlastní rozhraní použijte JavaScript API, pro serverová propojení webhooky a serverové API.

Adresy

Jak widget zjistí adresu WebSocket:

  1. data-rc-ws-url na značce načítacího skriptu, window.ReactiveChatSettings.wsUrl nebo ReactiveChat('boot', { wsUrl }) – pokud je hodnota nastavena, použije se.
  2. Jinak se odvodí z umístění loader.js: wss://ws. + poslední dvě části domény + /rc_wss/. Z cdn.reactive.chat vznikne wss://ws.reactive.chat/rc_wss/.

Z toho vyplývají dvě úskalí:

Cesta WebSocket nevyhodnocuje parametry dotazu.

Navázání spojení

Formát rámce

Každá zpráva v obou směrech má tento tvar:

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

Neznámé typy a neznámá pole se tiše ignorují – tím zůstávají starší widgety kompatibilní s novějšími servery.

Přehled typů zpráv

Z widgetu na server:

Ze serveru do widgetu:

Chybové kódy

Chyba přijde jako rámec t: "error" s d.code, d.message (anglicky, pouze pro vývojáře), d.retry (no, immediate, backoff, after_reinit) a podle potřeby d.retry_after_ms a d.detail. Seznam je uzavřený; neznámý kód se zpracuje jako internal.

Kódy uzavření

Limity na spojení

Server odesílá závazné hodnoty v init_ok.limits a init_ok.features:

Opětovné připojení, pořadí, duplicity

Záloha přes HTTP

Pokud síť nepropustí WebSocket, chat pokračuje přes běžné požadavky HTTPS – se stejnými rámci a stejnými limity. Používá ji pouze widget; rozhraní operátora se vždy připojuje přes WebSocket. Stručná verze pro redaktory je v části Záloha přes HTTP.

Kdy se použije:

Bez fetch v prohlížeči záloha neexistuje. Pokud vypadne existující spojení WebSocket, widget se znovu připojí přes WebSocket. Po přechodu na zálohu jednou na stránku tiše ověří, zda už WebSocket projde; pokud ano, smaže rc_http a další stránka opět použije WebSocket.

Požadavky (pod https://ws.reactive.chat/rc_wss/h/):

Widget nejprve zkusí SSE; pokud do 5 sekund nepřijde první rámec (například kvůli bufferování proxy), přejde na long polling. Chyby jako 404 (unbekannt), 403, 413 nebo 429 považuje za výpadek spojení a opakuje pokus s prodlevou. Po 60 sekundách bez požadavku server spojení uzavře. CORS: Access-Control-Allow-Origin odráží origin, bez přihlašovacích údajů; kontrola originu probíhá v init, stejně jako u WebSocket.

Požadavky na vaší straně:

Uloženo v prohlížeči: pouze záznam rc_http v sessionStorage s časem připojení HTTPS, bez osobních údajů.

Která cesta je aktivní

Na kartě síťových požadavků ve vývojářských nástrojích:

Dále: Limity a kvóty · Řešení problémů

آخرین به‌روزرسانی: