Miten voimme auttaa?

Kerro lyhyesti, mistä on kyse – palaamme asiaan sähköpostitse.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Aloitussivulle

Taşıma: WebSocket, HTTP yedeği ve yeniden bağlanma

Widget’ın sohbet sunucusuyla iletişimi: adresler, rc.v1 alt protokolü, çerçeve biçimi, hata ve kapanış kodları, sınırlar, seq ile yeniden bağlanma, yineleme önleme, SSE ve uzun yoklamayla HTTP yedeği.

Bu sayfa tarayıcıdaki widget ile sohbet sunucusu arasında olanları açıklar. Sorun giderme (geliştirici araçlarının ağ sekmesi), proxy ve güvenlik duvarı kuralları, Content Security Policy için gereklidir.

Önemli: İletişim protokolü bizim widget’ımızla bizim sunucumuz arasındaki arayüzdür. Protokolü doğrudan kullanan özel istemciler resmen desteklenmez; alanlar protokol sürümü 1 içinde genişletilebilir. Kendi arayüzleriniz için JavaScript API’sini, sunucu bağlantıları için webhook’ları ve sunucu API’sini kullanın.

Adresler

Widget WebSocket adresini nasıl bulur?

  1. Yükleyici etiketindeki data-rc-ws-url, window.ReactiveChatSettings.wsUrl veya ReactiveChat('boot', { wsUrl }); ayarlanmışsa bu değer geçerlidir.
  2. Aksi durumda loader.js konumundan türetilir: wss://ws. + alan adının son iki bölümü + /rc_wss/. cdn.reactive.chat, wss://ws.reactive.chat/rc_wss/ olur.

Bundan iki sorun doğar:

WebSocket yolu sorgu parametrelerini değerlendirmez.

Bağlantı kurma

Çerçeve biçimi

Her iki yöndeki her mesaj şu biçimdedir:

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

Bilinmeyen tür ve alanlar sessizce yok sayılır; böylece eski widget’lar yeni sunucularla uyumlu kalır.

Mesaj türlerine genel bakış

Widget’tan sunucuya:

Sunucudan widget’a:

Hata kodları

Hata, d.code, d.message (İngilizce, yalnızca geliştiriciler için), d.retry (no, immediate, backoff, after_reinit) ve gerektiğinde d.retry_after_ms, d.detail içeren t: "error" çerçevesi olarak gelir. Liste kapalıdır; bilinmeyen kod internal gibi ele alınır.

Kapanış kodları

Bağlantı başına sınırlar

Sunucu esas alınacak değerleri init_ok.limits ve init_ok.features içinde gönderir:

Yeniden bağlanma, sıra, yinelemeler

HTTP yedeği

Ağ WebSocket’e izin vermiyorsa sohbet normal HTTPS istekleriyle devam eder; aynı çerçeve ve sınırlarla. Yalnızca widget kullanır; temsilci arayüzü her zaman WebSocket ile bağlanır. Editörler için kısa sürüm HTTP yedeği bölümündedir.

Devreye girdiği durumlar:

Tarayıcıda fetch yoksa yedek yoktur. Mevcut WebSocket kesilirse widget yine WebSocket ile bağlanır. Yedeğe geçtikten sonra WebSocket’in artık geçip geçmediğini sayfa başına bir kez sessizce kontrol eder; geçerse rc_http silinir ve sonraki sayfa yeniden WebSocket kullanır.

İstekler (https://ws.reactive.chat/rc_wss/h/ altında):

Widget önce SSE dener; ilk çerçeve 5 saniyede gelmezse (örneğin proxy arabelleğe alıyorsa) uzun yoklamaya geçer. 404 (unbekannt), 403, 413 veya 429 gibi hataları kesilen bağlantı gibi ele alır; bekleyerek yeniden dener. 60 saniye istek gelmezse sunucu bağlantıyı kapatır. CORS: Access-Control-Allow-Origin kaynağı, erişim bilgileri olmadan yansıtır; kaynak kontrolü WebSocket’teki gibi init içinde yapılır.

Sizin tarafınızdaki gereksinimler:

Tarayıcıda saklanan: Yalnızca sessionStorage içinde HTTPS bağlantısının zamanıyla rc_http kaydı; kişisel veri yoktur.

Hangi yol etkin?

Geliştirici araçlarının ağ sekmesinde:

Sonraki: Sınırlar ve kotalar · Sorun giderme

Päivitetty: