2011-12-17 22 views
7

Kullanıcıların, düğüm sunucumu socket.io ile bağlandığı bir sayfam var ancak sunucuya açık bir yuvaya sahip olmalarına izin vermekteyim (hesap kimliklerini yetkilendirirken ve bir dizide saklarken) ve bu zamanın% 99 iyi çalışıyor. Sorun şu ki, kullanıcılar bağlantıyı kestiğinde, sunucular arası bağlantı kesme olayı bir nedenden ötürü ateş etmemekte, bu yüzden hesaplarını, kilitli kalmalarıyla sonuçlanan müşteri dizisinden temizleyemem.Soketin hala bağlı olup olmadığı nasıl kontrol edilir?

Eski soket bağlantılarının (kimliğim var) hala aktif olup olmadığını kontrol etmenin bir yolu var mı? (Öyleyse, eski bağlantılarını temizleyebilir ve yeniden bağlanabilirler)

+0

Bu Matt için bir çözüm buldunuz mu? – SatheeshJM

cevap

4

Kalp atışlarının doğru olarak ayarlandığından emin olun (varsayılan). Zaman aşımı geçerse, bağlantı kesilmesi otomatik olarak gerçekleşmelidir. Ancak, kalp atışı çalışmayan bir hata raporu vardı. Socket.IO'nun en son sürümüne sahip olduğunuzdan emin olun (hatanın durumundan emin değilim).

Hâlâ yardıma ihtiyacınız varsa, kullanıcı yeniden çalıştığında eski bağlantısına bir ping gönderebilir:

sunucudan bir 'ping' Emit ve eğer müşteriden 'pong' ile cevap bağlantı hala yaşıyor. Ping zaman aşımına uğrarsa (20 saniye sonra), bağlantıyı manuel olarak bırakın, böylece kullanıcı tekrar bağlanabilir. Başka bir istemcinin bağlanmaya çalıştığı özgün istemciyi bilgilendirmek için ping'i kullanabilir ve bu etki için bazı UI'yi yükseltebilirsiniz.

İlgili konular