Чим ми можемо допомогти?

Стисло опишіть питання; ми відповімо електронною поштою.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
На головну

Транспорт: WebSocket, HTTP і повторне підключення

Обмін віджета із сервером чату: адреси, підпротокол rc.v1, формат кадру, коди помилок і закриття, ліміти, повторне підключення з seq й усуненням дублікатів та резервний канал HTTP через SSE і довге опитування.

Ця сторінка описує обмін між віджетом у браузері й сервером чату. Вона потрібна для усунення несправностей (вкладка мережі інструментів розробника), правил проксі й міжмережевого екрана та Content Security Policy.

Важливо: мережевий протокол — інтерфейс між нашим віджетом і нашим сервером. Власні клієнти, що безпосередньо використовують протокол, офіційно не підтримуються; поля можуть розширюватися в межах версії 1. Для власних інтерфейсів використовуйте JavaScript API, для серверних з’єднань — вебхуки та серверний API.

Адреси

Як віджет знаходить адресу WebSocket:

  1. data-rc-ws-url у тегу завантажувача, window.ReactiveChatSettings.wsUrl або ReactiveChat('boot', { wsUrl }) — якщо задано, діє це значення.
  2. Інакше виводиться з розташування loader.js: wss://ws. + останні дві частини домену + /rc_wss/. cdn.reactive.chat стає wss://ws.reactive.chat/rc_wss/.

Звідси дві пастки:

Шлях WebSocket не обробляє параметрів запиту.

Встановлення з’єднання

Формат кадру

Кожне повідомлення в обох напрямках має вигляд:

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

Невідомі типи й поля мовчки ігноруються, що зберігає сумісність старих віджетів із новими серверами.

Огляд типів повідомлень

Від віджета до сервера:

Від сервера до віджета:

Коди помилок

Помилка надходить кадром t: "error" із d.code, d.message (англійською, лише для розробників), d.retry (no, immediate, backoff, after_reinit) і за потреби d.retry_after_ms та d.detail. Список закритий; невідомий код обробляється як internal.

Коди закриття

Ліміти з’єднання

Сервер надсилає визначальні значення в init_ok.limits і init_ok.features:

Повторне підключення, порядок, дублікати

Резервний канал HTTP

Якщо мережа не пропускає WebSocket, чат працює через звичайні HTTPS-запити з тими самими кадрами й лімітами. Використовує лише віджет; інтерфейс операторів завжди підключається через WebSocket. Коротка версія для редакторів — Резервний канал HTTP.

Коли діє:

Без fetch у браузері резервного каналу немає. Після обриву наявного WebSocket віджет підключається знову через WebSocket. Після переходу на резерв він тихо перевіряє раз на сторінку, чи вже проходить WebSocket; якщо так, видаляє rc_http, і наступна сторінка знову використовує WebSocket.

Запити (під https://ws.reactive.chat/rc_wss/h/):

Спочатку віджет пробує SSE; якщо перший кадр не надійшов за 5 секунд (наприклад через буферизацію проксі), переходить на довге опитування. Помилки 404 (unbekannt), 403, 413 або 429 обробляє як обрив із повтором після затримки. Після 60 секунд без запиту сервер закриває з’єднання. CORS: Access-Control-Allow-Origin віддзеркалює джерело без облікових даних; перевірка джерела відбувається в init, як із WebSocket.

Вимоги на вашому боці:

Зберігається в браузері: лише запис rc_http у sessionStorage з часом HTTPS-з’єднання, без персональних даних.

Який шлях активний

На вкладці мережі інструментів розробника:

Далі: Ліміти й квоти · Усунення несправностей

Оновлено: