2014-06-07 13 views
8

, hiç bir veri veya bant genişliği kullanılmış veya açıkça bazı gönderirken haricinde ikisi arasında değiş tokuş edilen olmadığı doğru mu? Ve eğer bu doğruysa, bu, veri sadece çok seyrek olarak aktarıldığı sürece, bir sunucuda bir anda binlerce açık bağlantıya sahip olabildiğim anlamına mı geliyor?Web sağlayıcıları açık bant genişliği veya diğer kaynakları kullanıyor musunuz? Ben bir sunucu ve bir masaüstü istemcisi arasında açık bir WebSocket bağlantınız varsa

cevap

3

Teknik olarak evet. WebSocket protokolü ping/pong çerçevelerine sahip olsa da ve iki uçtan herhangi biri periyodik olarak ping gönderebilir ve pongları cevap olarak bekleyebilir, aksi halde bağlantıyı keser.

Bu çok kötü bir fikir, bir "canlı tutmak" mekanizması uygulamıyor olurdun, bağlantıların aslında bağlı veya düzgün kapatılmamış olan haber ve mümkün olmayacaktır.

http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html

+1

Kimimiz düşük bant genişliği, düşük güvenilirlik bağlantılar (_e.g._, amatör uydu iletişim) üzerinde gereksiz yere kırılgan hale keepalives TCP üzerinde büyük siğil olduğuna inanıyoruz. –

+3

Bant genişliği olmayan kaynakları unutmayın. Çoğu sistemde, açık bir TCP bağlantısı (_e.g._, bir WebSocket) paket trafiği olmasa bile çeşitli sınırlı kaynakları tüketir. Tampon belleği ve bağlantı kontrol blokları en yaygın olanıdır, ancak bazı sistemlerde port numaraları da vardır. –

+1

Ping/pong çerçeveleri iki bayt kadar küçük olabilir ve küçük aktivite ile bağlantılarının binlerce herhangi bir modern bilgisayar için sorun değildir olması. Dizüstü bilgisayarımda binlerce sunucuyla performans testi yapıyorum. Mobil cihazlar bağlantıyı düzgün bir şekilde kapatmadan bağlantıyı kaybedebileceğinden, canlı mekanizma bulundurmak tavsiye edilir. – vtortola