INTEGRITY Dokumentace

WebSockets

Cloudflare podporuje proxovaná připojení WebSocket bez další konfigurace.

Kontext

WebSockets jsou otevřená spojení udržovaná mezi klientem a origin serverem. V rámci připojení WebSockets si klient a origin mohou vzájemně předávat data bez nutnosti znovu navazovat relace. Díky tomu je výměna dat v připojení WebSockets rychlá. WebSockets se často používají pro aplikace v reálném čase, jako je živý chat nebo hraní her.

Povolit WebSockets

Chcete-li povolit WebSockets připojení k vašemu origin serveru v dashboardu:

  1. V dashboardu Cloudflare přejděte na Síť stránce.

    Přejděte na Síť ↗
  2. Pro WebSockets, přepněte přepínač na On.

Chcete-li povolit WebSockets připojení k vašemu origin serveru pomocí API odešlete PATCH požadavek s websockets jako název nastavení v cestě URI a value parametr nastavený na "on".

Poznámky ke kompatibilitě

Produkt Compatible Poznámky
Argo Ne Argo není kompatibilní s WebSockets.
SSL Ano
WAF Ano* Počáteční požadavek HTTP 101 podléhá spravovaným pravidlům WAF, vlastním pravidlům, pravidlům omezování frekvence požadavků a dalším funkcím WAF stejně jako jakékoli jiné připojení WebSockets. Jakmile je ale připojení navázáno, WAF už žádnou další kontrolu neprovádí.
Workers Ano Můžete také použít Durable Objects jako endpoint pro WebSocket relace, což vám dává plnou kontrolu nad zprávami odesílanými klientům a přijímanými od nich.

Dostupnost

WebSockets jsou podporovány ve všech plánech Cloudflare.

Měření požadavků a šířky pásma

Vzhledem k povaze připojení WebSocket si možná všimnete, že se z hlediska počtu požadavků a využití šířky pásma liší od běžného provozu HTTP. Pokud jste zákazníkem s plánem Enterprise, je důležité vzít v úvahu, jak Cloudflare měří požadavky a šířku pásma, abyste dokázali přesně odhadnout své využití.

Cloudflare měří jedno připojení WebSocket následujícím způsobem:

Jakmile je připojení WebSocket ukončeno, můžete zobrazit souhrnné využití WebSocket prostřednictvím Analýza provozu, GraphQL Analytics API, a protokoly požadavků HTTP.

Technická poznámka

Když Cloudflare nasazuje nový kód do své globální sítě, může restartovat servery, což ukončí připojení WebSockets.

Osvědčené postupy

Řešení potíží

Řešení problémů s WebSocket vám usnadní klientské nástroje jako wscat ↗. Možnost reprodukovat problém na jediné URL pomocí minimalistického nástroje pomáhá problém zúžit.

EdgeStartTimestamp a EdgeStopTimestamp pole v protokoly požadavků HTTP představují dobu trvání WebSocket připojení (nepředstavují počáteční HTTP připojení).

Limity připojení

Časový limit nečinnosti

Cloudflare ukončí připojení WebSocket, pokud po určitou dobu nedojde k přenosu dat žádným směrem. Zákazníci s plánem Enterprise mohou nastavení vlastního časového limitu nečinnosti požádat u svého týmu pro správu účtu. Aby dlouhotrvající připojení zůstala aktivní i v obdobích nečinnosti, implementujte na straně klienta mechanismus heartbeat (ping/pong).

Afinita relace pro origin servery WebSocket s vyvažováním zátěže

Pokud se váš origin server WebSocket nachází za Cloudflare Load Balancerem, zapněte Session affinity aby bylo zajištěno, že všechny požadavky od stejného klienta jsou směrovány na stejný origin server. Bez session affinity může opětovné připojení WebSocket skončit u jiného originu, který nemá stav relace.