எப்படி உதவலாம்?

இது எதைப் பற்றியது என்று சுருக்கமாகச் சொல்லுங்கள் — மின்னஞ்சலில் உங்களைத் தொடர்புகொள்கிறோம்.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
முகப்புப் பக்கத்துக்குச் செல்லவும்

Transport: WebSocket, tryb awaryjny HTTP i ponowne łączenie

Jak widżet rozmawia z serwerem czatu – adresy, podprotokół rc.v1, format ramek, kody błędów i kody zamknięcia, limity, ponowne łączenie z seq i deduplikacją oraz tryb awaryjny HTTP przez Server-Sent Events i long polling.

Ta strona opisuje, co dzieje się między widżetem w przeglądarce a serwerem czatu. Przyda ci się przy szukaniu błędów (zakładka „Sieć” narzędzi deweloperskich), przy odblokowaniach w proxy i firewallu oraz przy twojej Content Security Policy.

Ważne: protokół sieciowy jest interfejsem między naszym widżetem a naszym serwerem. Własne klienty, które mówią tym protokołem bezpośrednio, nie są oficjalnie wspierane; pola mogą się rozszerzać w ramach wersji protokołu 1. Do własnych interfejsów użyj API JavaScript, do integracji serwerowych webhooków i API serwera.

Adresy

Jak widżet znajduje adres WebSocket:

  1. data-rc-ws-url w tagu loadera, window.ReactiveChatSettings.wsUrl albo ReactiveChat('boot', { wsUrl }) – jeśli ustawiono, obowiązuje ta wartość.
  2. W przeciwnym razie adres jest wyprowadzany z miejsca, z którego pochodzi loader.js: wss://ws. + ostatnie dwa człony domeny + /rc_wss/. Z cdn.reactive.chat powstaje wss://ws.reactive.chat/rc_wss/.

Wynikają z tego dwie pułapki:

Parametrów query droga WebSocket nie analizuje.

Nawiązywanie połączenia

Format ramki

Każda wiadomość w obu kierunkach ma taką postać:

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

Nieznane typy i nieznane pola są po cichu ignorowane – dzięki temu starsze widżety pozostają zgodne z nowszymi serwerami.

Typy wiadomości w skrócie

Od widżetu do serwera:

Od serwera do widżetu:

Kody błędów

Błąd przychodzi jako ramka t: "error" z d.code, d.message (po angielsku, tylko dla programistów), d.retry (no, immediate, backoff, after_reinit) i w razie potrzeby d.retry_after_ms oraz d.detail. Lista jest zamknięta; nieznany kod jest traktowany jak internal.

Kody zamknięcia

Limity na połączenie

Wiążące wartości serwer wysyła w init_ok.limits i init_ok.features:

Ponowne łączenie, kolejność, duplikaty

Tryb awaryjny HTTP

Jeśli sieć nie przepuszcza WebSocket, czat działa dalej przez zwykłe żądania HTTPS – z tymi samymi ramkami i tymi samymi limitami. Korzysta z niego tylko widżet; interfejs agentów łączy się zawsze przez WebSocket. Wersję skróconą dla redaktorów znajdziesz w Tryb awaryjny HTTP.

Kiedy się włącza:

Bez fetch w przeglądarce trybu awaryjnego nie ma. Jeśli istniejące połączenie WebSocket zostanie przerwane, widżet łączy się ponownie przez WebSocket. Po przejściu na tryb awaryjny raz na stronę sprawdza po cichu, czy WebSocket już przechodzi; jeśli tak, usuwa rc_http, a następna strona znowu używa WebSocket.

Żądania (pod https://ws.reactive.chat/rc_wss/h/):

Widżet najpierw próbuje SSE; jeśli w ciągu 5 sekund nie przyjdzie pierwsza ramka (np. dlatego, że proxy buforuje), przechodzi na long polling. Błędy takie jak 404 (unbekannt), 403, 413 czy 429 traktuje jak zerwanie połączenia i próbuje ponownie z odczekaniem. Po 60 sekundach bez pobrania serwer zamyka połączenie. CORS: Access-Control-Allow-Origin odzwierciedla pochodzenie, bez credentials; kontrola pochodzenia odbywa się tak jak przy WebSocket w init.

Wymagania po twojej stronie:

Zapisywane w przeglądarce: tylko wpis rc_http w sessionStorage z czasem nawiązania połączenia HTTPS, bez danych osobowych.

Która droga jest aktywna

W zakładce „Sieć” narzędzi deweloperskich:

Dalej: Limity i kwoty · Rozwiązywanie problemów

கடைசியாகப் புதுப்பித்தது: