İstemci ve sunucu arasında bir web bağlantısı aracılığıyla bağlantı kurmak için nodejs + websocket modülünü kullanıyorum. Sunucu, istemciye birkaç kez veri yayar: Bu bir TCP bağlantısı olduğunu biliyorum, ancak bu konuda her türlü şüpheyi silmeme izin verin. "Emits" ardışık mı? İlk "yayımı" 1sn'de yapıldıysa ve ikincisi 2s'de "yayar" olsaydı, müşteri ilk salımı ve sonra ikincisini alır mı? İlk yayının henüz alınmaması ve ikincisinin gönderilmesi durumunda ne olur? Aramalar engelleniyor mu?Websocket: sunucu verileri senkronize olarak mı gönderiliyor?
cevap
WebSockets TCP üzerinde yerleşiktir. TCP, paketlerin teslimatını ve siparişini garanti eder. Buna ek olarak, TCP'den farklı olarak, WebSockets mesaj tabanlı bir mesajdır. Bu, WebSocket mesajlarının tüm mesaj olarak alındığı anlamına gelir (TCP akışı ve 'mesajlar' dinleyicinin perspektifinden parçalara bölünebilir)
node.js'de iki adet Aynı bağlamdan (aynı işlevden) biri diğerinden sonra bu sırayla teslim edilecektir. Ancak, yayılımlarınız iki farklı geri aramada ise, Node.js'nin bu geri çağrıları ne zaman planlayacağını ve böylece zamanlanan geri aramaların yeniden sipariş vermesi nedeniyle emirlerin yeniden sipariş verileceğini garanti edemezsiniz.
Güncelleme:
fs.readFile(file1,function(e,data) { ws.send(data); });
fs.readFile(file2,function(e,data) { ws.send(data); });
sırası: Burada
node.js olay güdümlü doğa WebSocket'e şaşırtıcı yeniden düzenlenmesi ile sonuçlanabilir neden genişletmek için bir örnektir/gönderir yayar Bu dosya1 ve dosya2 tarayıcıya iletilemez öngörülebilir değildir (dosya boyutu bile önbelleğe alma, dosya sistemi parçalanması, vb gibi şeyler nedeniyle ateş edecek bir garanti değildir). Dosya2'nin readFile değeri bir setTimeout kullanılarak 1 saniye sonra çağrılmış olsa bile, tarayıcı yine de bunları düzgün bir şekilde alabilir (örneğin, dosya1 çok daha büyükse ve 3 saniye sonra okursa dosya1 gönderildikten sonra dosya1 gönderilir) .
Evet, emer/gönderimler, tarayıcıda Node.js'de çağrıldıkları sırayla alınacak, ancak Node.js'nin eşzamansız olaya bağlı yapısı nedeniyle, emir/gönderimler sizin siparişinizde gerçekleşmeyebilir. bekliyoruz.
Node.js'nin eşzamansız olaya dayalı yapısı, Node.js'nin mükemmel verim ve performansına olanak veren şeydir, ancak bu tür geri çağırma tabanlı programlama için kullanılmazsa, bazı şaşırtıcı sonuçlara sahip olabilir.
"Ancak, yaymalarınız iki farklı geri aramada bulunuyorsa, Node.js'nin bu geri çağrıları zamanlayacağı zaman garanti veremezsiniz ve böylece zamanlanan geri çağrılar yeniden sipariş verildiğinden yayının yeniden sıralanmasını sağlayabilirsiniz." - geri arama 1, geri arama 2'den önce çaldıysa ve her biri yayarsa, geri arama 1 'emrimi *, geri çağırma 2'nin yayınlanmasından önce çalışır. – einaros
@einaros, bu doğru, ama benim amacım, geri çağırmaların doğal olarak asenkron olmalarıdır. Geri arama B'yi kaydetmeden önce A 1 saniye geri çağırırsanız, geri arama A ile rutin tamamlanması 3 saniye sürüyorsa ve B sadece 1 saniye sürüyorsa, önce A önce A olsa bile B önce A olacaktır. G/Ç tamamlama işlemine devam eden tüm geri bildirimler genellikle öngörülemeyen zamanlamaya sahip olacaktır. – kanaka
Belirli bir olay için belirli bir sırada kaydedilen geri çağrıların her zaman bu sırayla yürütüldüğünü göz önünde bulundurarak, geri kalanların herhangi birinin OP'nin sorusuyla nasıl bir ilişki içinde olduğunu göremiyorum. Emisyonları tetikleyen olaylar düzeni değiştirirse; Emisyonlar da düzeni değiştirecek. – einaros
- 1. AngularJS ile sunucu verileri nasıl senkronize edilir?
- 2. Bir sunucu Python 3 websocket modülü var mı?
- 3. Arduino işlemine geri gönderme verileri gönderiliyor
- 4. Websocket
- 5. Bir Argüman Olarak DataType Gönderiliyor?
- 6. Sunucu verileri müşteriye nasıl iletebilir?
- 7. arraybuffer Websocket ile ikili olarak nasıl gönderilir?
- 8. DizinlenmişDB'ye nasıl senkronize olarak erişebilirim?
- 9. WebSocket
- 10. Vagrant - ağ paylaşımı senkronize edilmiş klasör olarak mı?
- 11. javascript websocket onmessage event.data
- 12. senkronize süresi
- 13. Raylar 3 uzak formu html olarak gönderiliyor
- 14. svn sunucusu otomatik olarak senkronize edilir
- 15. HTML sayfası ayrıştırma senkronize olarak
- 16. Websocket Server Android
- 17. Anahtarlar giriş alanına programlı olarak gönderiliyor mu?
- 18. HTML POST parametreleri, verileri ayırmak için ve işareti olmadan katı bir blok olarak gönderiliyor
- 19. Geridönüştürme seti Bağdaştırıcıyı senkronize olarak ayarlama
- 20. Websocket İstemcisi
- 21. Javascript istemcisine Node.js sunucu verileri nasıl gönderilir?
- 22. mina 2.0.13 + WebSocket + buffer.capacity
- 23. WebSocket desteği
- 24. ko.applyBindings senkronize mi, senkronize değil mi?
- 25. Javascript'te bir dosyayı senkronize olarak okuyun
- 26. Apple Watch için sunucu verileri alma
- 27. Java'da senkronize bir kuyruk var mı?
- 28. websocket ölçeklenebilirlik
- 29. WebSocket Handshake Hatası AWS ile
- 30. Google App Engine'deki dev verileri nasıl senkronize edilir?
http://stackoverflow.com/q/11804721/632951 – Pacerier