WebSocket, tarayıcı ile sunucu arasında çift yönlü ve sürekli açık bir kanal kurar. Canlı veri panelleri, sohbet uygulamaları ve gerçek zamanlı bildirimler bu teknolojiyi kullanır. Proxy üzerinden çalışıp çalışmadığı, proxy'nin türüne ve yapılandırmasına bağlıdır.
WebSocket Nasıl Başlar?
WebSocket ayrı bir protokol değildir; bir HTTP isteğiyle başlar ve Upgrade mekanizmasıyla protokol değiştirir:
101 yanıtından sonra bağlantı HTTP olmaktan çıkar ve WebSocket çerçeveleri akmaya başlar. Bu yüzden araya giren her katmanın upgrade'i anlaması gerekir.
Proxy Türüne Göre Davranış
En güvenli kombinasyon wss:// + CONNECT tüneli. Şifreli olduğu için proxy içeriğe karışamaz ve upgrade'i bozamaz.
WebSocket kullanan bir uygulamayı proxy üzerinden çalıştıracaksanız wss:// (şifreli) tercih edin. Proxy tüneli yalnızca bayt taşıdığı için upgrade sürecine hiç müdahale edemez ve uyumluluk sorunu ortadan kalkar.
Neden Bazı Proxyler Bozar?
Düz ws:// trafiğinde proxy isteği okur. Eski veya katı yapılandırılmış proxyler şu hataları yapabilir:
Son satır sık gözden kaçar: rotating proxy kullanıyorsanız WebSocket bağlantısı IP değiştiğinde kopar. Bu senaryoda statik IP gerekir.
Kopmayı Önlemek: Ping/Pong
Proxyler ve ara yönlendiriciler, uzun süre veri akmayan bağlantıları kapatır. WebSocket protokolü bu durum için ping/pong çerçeveleri tanımlar. Çoğu kütüphane bunu otomatik yapar ama aralığı ayarlamanız gerekebilir:
Ping aralığını proxy'nin boşta kalma zaman aşımından kısa tutun. 20–25 saniye çoğu yapılandırma için güvenli bir değerdir.
SOCKS5 ile WebSocket
SOCKS5 uygulama verisine hiç bakmadığı için WebSocket'i doğal olarak taşır. Upgrade el sıkışması, protokol değişimi ve çerçeve akışı — hepsi SOCKS5 için sadece bayt akışıdır. Bu, SOCKS5'i WebSocket senaryolarında en güvenli seçenek yapar.
SOCKS5'in genel davranışı için SOCKS5 nasıl çalışır yazımıza bakabilirsiniz.
Uzun Ömürlü Bağlantı ve IP Kararlılığı
WebSocket doğası gereği uzun ömürlüdür; rotasyon ise IP değiştirmeye çalışır. İkisi çakışır. Bu senaryoda statik IP veya çok uzun sticky süre gerekir.
Yeniden Bağlanma Stratejisi
Proxy üzerinden WebSocket kullanıyorsanız kopmayı istisna değil beklenen durum olarak kurgulayın:
- Üstel geri çekilme: 1, 2, 4, 8 saniye şeklinde artan bekleme.
- Jitter ekleyin: Aynı anda kopan çok sayıda istemcinin aynı anda dönmesini önler.
- Durum senkronizasyonu: Yeniden bağlandıktan sonra kaçırılan mesajları isteyin.
- Maksimum deneme sınırı: Sonsuz döngüye girmeyin; kullanıcıya bildirin.
- Bağlantı sağlığını izleyin: Kopma sıklığı artıyorsa proxy yapılandırmasını gözden geçirin.
Özet
WebSocket, HTTP upgrade mekanizmasıyla başlar ve bu nedenle araya giren katmanların protokol değişimini anlaması gerekir. wss:// (şifreli) kullanmak ve CONNECT tüneli ya da SOCKS5 tercih etmek uyumluluk sorunlarını büyük ölçüde ortadan kaldırır. Uzun ömürlü bağlantılar rotating proxy ile çakışır; bu senaryoda statik IP gerekir. Ping/pong aralığını proxy zaman aşımından kısa tutun ve sağlam bir yeniden bağlanma stratejisi kurgulayın. Statik IP seçenekleri için ISP proxy sayfamıza bakabilirsiniz.