HTTP yedeği
Bir ağ WebSocket bağlantılarını engellediğinde sohbet otomatik olarak normal HTTPS üzerinden devam eder. Bunun ne zaman gerçekleştiği, nasıl zorlanacağı, Content Security Policy ve proxy gereksinimleri ile sorun giderme.
Widget normalde sohbet sunucusuna WebSocket üzerinden bağlanır. Bazı ağlar buna izin vermez. Bu durum için HTTP yedeği vardır: sohbet, sizin veya ziyaretçilerinizin hiçbir şey yapmasına gerek kalmadan normal HTTPS istekleri üzerinden devam eder.
HTTP yedeği nedir?
WebSocket bağlantıları genellikle şu durumlarda başarısız olur:
- proxy veya güvenlik duvarı yalnızca normal HTTP(S) isteklerine izin veren kurumsal ağlarda,
- WebSocket bağlantılarını iletmeyen barındırma sağlayıcıları, CDN’ler veya yük dengeleyicilerde,
UpgradeveConnectionüst bilgilerini iletmeyen bir ters proxy arkasında.
HTTP yedeğinde widget, sunucunun mesajlarını Server-Sent Events olarak alır (uzun süre açık kalan bir HTTPS akışı). Bu akıştan hiçbir şey gelmezse uzun yoklamaya geçer. Gönderim HTTPS POST kullanır. Her iki yol da WebSocket ile aynı mesajları taşır: ziyaretçileriniz yazar, yapay zekâ asistanının ve temsilcilerinizin yanıtlarını alır; birden fazla açık sekme her zamanki gibi tek bağlantıyı paylaşır. Dosya ekleri zaten HTTPS üzerinden yüklenir ve bağlantı türüne bağlı değildir.
Yedek, web sitenizdeki sohbet widget’ı için geçerlidir. Temsilcilerinizin arayüzü WebSocket üzerinden bağlanmaya devam eder.
Ne zaman devreye girer?
Widget şu durumlarda HTTP yedeğini kullanır:
- tarayıcı WebSocket desteklemiyorsa,
- arka arkaya iki WebSocket bağlantı denemesi başarısız olursa; 8 saniye sonra ne kurulmuş ne de reddedilmiş bir deneme de başarısız sayılır,
- siz zorunlu tutarsanız (aşağıya bakın).
Geçiş yalnızca sayfada henüz bir WebSocket bağlantısı kurulmamışsa gerçekleşir. Mevcut bir WebSocket bağlantısı, örneğin ağ değiştiği için kesilirse widget yine WebSocket üzerinden bağlanır.
Yedek etkinleştiğinde widget bu sayfada onu kullanmaya devam eder. Sonraki sayfalarda yeniden iki deneme kaybedilmemesi için geçişi hatırlar: aynı sekmede 30 dakika içinde açılan sayfalar doğrudan HTTPS üzerinden bağlanır. Aynı zamanda widget, her sayfada bir kez arka planda WebSocket bağlantısının artık kurulup kurulamadığını kontrol eder. Kurulabiliyorsa sonraki sayfa yeniden WebSocket kullanır; geçerli sayfa HTTP yedeğinde kalır.
Yedeği zorunlu kılma
Testler için veya WebSocket bağlantılarının çalışmadığı bilinen ortamlarda HTTP yedeğini baştan etkinleştirebilirsiniz. En kolay yol, widget’ın script etiketinde data-rc-transport="http" özniteliğini kullanmaktır:
<script src="https://cdn.reactive.chat/loader.js"
data-rc-site-key="SITE_KEY"
data-rc-transport="http"
async></script>
Widget özniteliği tüm belgede arar. Bu nedenle widget başladığında belgede zaten bulunan başka bir öğede de çalışır.
Alternatif olarak seçeneği JavaScript ile, widget’ın script etiketinden önce ayarlayın:
<script>
window.ReactiveChatSettings = { transport: 'http' };
</script>
<script src="https://cdn.reactive.chat/loader.js"
data-rc-site-key="SITE_KEY"
async></script>
Daha sonra yapılan ReactiveChat('boot', { transport: 'http' }) çağrısının buna etkisi yoktur: bağlantı türü widget başladığında belirlenir.
Content Security Policy
Server-Sent Events, uzun yoklama ve gönderim, sohbet bağlantısıyla aynı adresi kullanır; yalnızca https:// kullanılır, wss:// yerine. Web siteniz Content Security Policy belirliyorsa connect-src her iki biçime de izin vermelidir:
connect-src 'self' wss://ws.reactive.chat https://ws.reactive.chat
Çevrimdışı form ve dosya yüklemeleri de https:// adresini kullanır. Özel alan adınız varsa buraya alt alan adınızın adresleri yazılır:
connect-src 'self' wss://chat.your-domain.com https://chat.your-domain.com
Politikanızın diğer girdileri aynı kalır. Politikanın başka nelere izin vermesi gerektiği Widget’ı yerleştirme sayfasında açıklanır.
Özel alan adıyla
Sohbeti web sitenizin bir alt alan adı üzerinden çalıştırıyorsanız HTTP yedeği WebSocket ile aynı /rc_wss/ yolunu kullanır. Proxy’nizin ek bir yola ihtiyacı yoktur; ancak bu yoldaki yanıtları arabelleğe almadan iletmelidir:
- nginx:
/rc_wss/bölümündeproxy_buffering offveproxy_cache off, - Apache:
/rc_wss/içinProxyPasssatırındaflushpackets=on, - Caddy:
/rc_wss/içinreverse_proxyiçindeflush_interval -1.
Hesap sayfasındaki ve özel alan adı kılavuzundaki şablonlar bu ayarları zaten içerir. Daha eski bir yapılandırmayı devraldıysanız güncel şablonla karşılaştırın.
Tarayıcıda ne saklanır?
HTTPS üzerinden başarılı bir bağlantıdan sonra widget, tarayıcının sessionStorage alanında rc_http girdisini oluşturur. Bu girdi yalnızca bağlantının zamanını içerir, kişisel veri içermez. Widget bunu sonraki sayfaların 30 dakika boyunca doğrudan HTTP yedeğine geçmesi için kullanır; WebSocket yeniden çalışır hale geldiğinde girdiyi siler. Her sessionStorage girdisi gibi en geç sekme kapandığında kaybolur. sessionStorage kullanılamıyorsa, örneğin bazı gizli pencerelerde, her sayfa yeniden WebSocket ile başlar.
Hangi yol etkin?
Tarayıcının geliştirici araçlarını açıp “Ağ” sekmesine gidin:
- WebSocket:
wss://ws.reactive.chat/rc_wss/adresine WebSocket türünde bir bağlantı vardır (özel alan adıyla alt alan adınıza). - HTTP yedeği:
https://ws.reactive.chat/rc_wss/h/…adresine istekler vardır; önceh/auf, ardından…/sseüzerinde uzun süre açık kalan bir akış (uzun yoklamada…/pollüzerinde tekrarlanan istekler) ve gönderilen her mesaj için…/txüzerinde bir istek.
“Uygulama” veya “Depolama” altında rc_http girdisinin ayarlanıp ayarlanmadığını da görebilirsiniz.
Sorun giderme
Content Security Policy https adresini engelliyor
connect-src yalnızca wss:// adresini listeliyorsa tarayıcı yedeğin isteklerini engeller. Tarayıcı konsolundaki CSP mesajı şu adresi belirtir: https://…/rc_wss/h/auf. WebSocket bağlantısının kurulabildiği yerlerde hiçbir şey fark etmezsiniz; ancak WebSocket olmayan ağlarda hiç bağlantı kurulmaz. Yukarıda gösterildiği gibi https:// adresini ekleyin.
Bir proxy yanıtları arabelleğe alıyor
Yoldaki bir proxy akışı arabelleğe alırsa Server-Sent Events geç, toplu halde gelir veya hiç gelmez. Widget akış üzerinden ilk mesajı 5 saniye bekler, ardından uzun yoklamaya geçer. Sohbet bu şekilde çalışır; ancak bağlantının kurulması birkaç saniye daha uzun sürer. Özel alan adınız varsa /rc_wss/ için arabelleğe almayı kapatın (yukarıya bakın).
Uzun süren istekler kesiliyor
Uzun yoklamada sunucu, bildirilecek bir şey olmadığında isteği 25 saniyeye kadar açık tutar. Açık bir akış üzerinden her 15 saniyede bir bağlantıyı canlı tutma sinyali gönderir. İstekleri daha erken sonlandıran güvenlik duvarları veya proxy’ler widget’ı sık sık yeniden bağlanmaya zorlar. Sohbet adresine yapılan isteklerin en az 30 saniye sürmesine izin verin.
Sohbet hiç bağlanmıyor
Hem WebSocket hem HTTP yedeği başarısız olursa widget arka planda denemeye devam eder. Sohbet adresine ziyaretçilerinizin ağından HTTPS üzerinden erişilip erişilemediğini ve Content Security Policy veya bir filtrenin bunu engelleyip engellemediğini kontrol edin.
Belgelerde daha fazlası
Ayrıntılı bilgi: Taşıma: WebSocket, HTTP yedeği ve yeniden bağlanma. Tüm bölümler belgelerde.
Posledná aktualizácia: