WebSocket nedir?
Kısa cevap
WebSocket, bir HTTP isteğiyle başlayıp Upgrade: websocket header'ı ve 101 Switching Protocols yanıtıyla yükseltilen, ardından iki yönlü ve uzun süre açık kalan bir bağlantıya dönüşen protokoldür; sohbet, canlı bildirim ve anlık veri akışı gibi uygulamalarda kullanılır. Yükseltmeden sonra bağlantı HTTP istek-yanıt düzeninden çıkar ve iki taraf istediği zaman mesaj gönderebilir. TR7'de WebSocket trafiğini HTTP vService ayrı bir ayar gerektirmeden taşır. Yükseltilmiş bağlantının veri akışı olmadan ne kadar açık kalacağı Timeouts profilindeki Tunnel(Websocket) Timeout alanıyla belirlenir (varsayılan 120 saniye); profil vService'e Timeout alanından atanır.
TR7'de Nerede Kullanılır
| Nerede | Alan / etiket | Ne için |
|---|---|---|
| Load Balancer → Profiles (L4-L7 Behavior Sets) → Timeouts | Tunnel(Websocket) Timeout (saniye; varsayılan 120, 0–60.000) | Yükseltilmiş bağlantının iki yönde de veri akışı olmadan açık kalma süresi |
| HTTP vService formu → Details | Timeout | Timeouts profilini vService'e atama; profil atanmamışsa varsayılan Timeouts profili değerleri geçerlidir |
WebSocket'in TR7 arkasında yayınlanması: WebSocket trafiği için yük dengeleme yapabilir miyim? · Kopan bağlantılar: WebSocket bağlantılarım belli bir süre sonra kopuyor; ne yapmalıyım?
Nasıl Çalışır?
- İstemci normal bir HTTP/1.1 isteği gönderir; istekte
Connection: UpgradeveUpgrade: websocketheader'ları bulunur. - Sunucu
101 Switching Protocolsile yanıt verirse bağlantı WebSocket'e geçer. - Aynı TCP bağlantısı üzerinden iki taraf da birbirine frame'ler hâlinde mesaj gönderir; bağlantı taraflardan biri kapatana ya da boşta kalma süresi dolana kadar açık kalır.
Protokolün tanımı: RFC 6455 · The WebSocket Protocol.
Sık Karıştırılan Noktalar
- "WebSocket için ayrı bir vService tipi ya da seçenek gerekir." HTTP vService yükseltmeyi kendiliğinden taşır; açılacak ayrı bir WebSocket ayarı yoktur.
- "Bağlantı kopuyorsa HTTP keepalive timeout artırılmalıdır." Yükseltilmiş bağlantının boşta kalma süresini Tunnel(Websocket) Timeout belirler; HTTP Keepalive Timeout yalnızca iki HTTP isteği arasındaki beklemeyi sınırlar.
- "Tunnel(Websocket) timeout bağlantının toplam ömrüdür." Süre boşta kalma süresidir; bağlantıda veri aktıkça sayaç yeniden başlar.
Dokümantasyonda nasıl yapılır
