← Nastavení sítě / síť
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:
-
V dashboardu Cloudflare přejděte na Síť stránce.
Přejděte na Síť ↗ -
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:
-
Požadavky: Cloudflare považuje za HTTP požadavek pouze počáteční upgrade request pro každé WebSocket připojení. Přestože přes navázané WebSocket připojení můžete posílat obousměrný proud zpráv, počítá se jako jediný dlouhotrvající HTTP požadavek.
-
Šířka pásma: Cloudflare měří přenos dat odeslaných od Cloudflare ke klientovi. To obvykle znamená, že zprávy od WebSocket serveru za Cloudflare ke klientovi WebSocket se započítávají do spotřeby přenosového pásma.
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
- Implementujte keepalive ↗.
- Zkontrolujte a poté odstraňte nebo prodlužte nastavení časového limitu na origin serveru nebo na klientovi, případně na obou.
Ř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.