كيف يمكننا المساعدة؟

يرجى توضيح الموضوع بإيجاز، وسنرد بالبريد الإلكتروني.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
إلى الصفحة الرئيسية

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:

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:

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:

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:

“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.

آخر تحديث: