yeniden bağlandıktan sonra bir bağlantı daha oluşturur socket.io ve node.js. ile basit bir sohbet uygulaması here çalışıyorum Node.js sunucusunu her yeniden başlattığımda, socket.io otomatik olarak yeniden bağlanır ve bir şekilde sunucuya bir tane daha bağlantı oluşturur, yani istemci artık iki kez aynı sohbet mesajını alır. Bunu nasıl düzeltirim?socket.io,
cevap
Soket bağlantısını kesmek için varsayılan olarak, connect
olayını çalıştıran kaybolan bağlantıyı yeniden bağlar. Böylece her yeniden bağlandığında, mesajları almak için bir tane daha olay dinleyicisi eklersiniz. Böylece, sunucu yeniden başlatmaya/bağlantı kaybına eşit sayıda mesaj alırsınız. İlk dinlemelisin
Incoming Chat:
Connected
dsdadsada
Disconnected //recieved by 1st listener
Connected //added 2nd listener
adasd
Disconnected //recieved by 1st listener
Disconnected //recieved by 2nd listener
Connected //added 3rd listener
sadece eventhandler ilk kez çalıştığı yerine on
ait once
kullanarak bağlayın.
iosocket.on('connect', function() {
$('#incomingChatMessages').append($('<li>Connected</li>'));
});
iosocket.on('message', function(message) {
$('#incomingChatMessages').append($('<li></li>').text(message));
});
iosocket.on('disconnect', function() {
$('#incomingChatMessages').append('<li>Disconnected</li>');
});
diğer 2 Olay Dinleyicilerine neden olabilir
kayıtlı edildi: yerine bu şekilde index.html yazmak için
iosocket.once('connect', function() {
yerine
iosocket.on('connect', function() {
deneyin deneyin bağlantı olayı. İstemcinin bağlantısı kesildiğinde, diğer 2 dinleyici hala burada olacak ve kayıt dışı bırakılmayacaktır.
Bence çözümünüz daha iyi. BURADA ÖNEMLİ BİR İŞLETMENİN MÜŞTERİ HATASINDA OLDUĞUNDAN, 'BAĞLANTI' OLAYLARINDAN DİĞER ETKİNLİKLERİ SİZE SUNUYORSUNUZ. (BAĞIMSIZ OLAYI YER ALAN) –
- 1. Benim socket.io kodunda socket.io
- 2. socket.io örnek
- 3. socket.io firefox
- 4. Socket.io Güvenlik Sorunları
- 5. Denetleyicilerinde socket.io kullanın
- 6. Socket.io, Express denetleyicilerinden yayar
- 7. SignalR veya NodeJS/Socket.IO?
- 8. Socket.io sunucuyla bağlan çevrimdışı
- 9. Bellek sızıntısı socket.io + node.js
- 10. Socket.io, kendinize mesajlar
- 11. Socket.io - Hangi oda soketinin
- 12. Node.js & Socket.IO - Odalar sorunu
- 13. socket.io 'da mesaj siparişi
- 14. socket.io istemci bağlantıyı kes
- 15. socket.io ile ekstra params
- 16. Socket.io sunucusu ileti alamıyor
- 17. socket.io join/leave
- 18. socket.io - belirli kullanıcılara yayın
- 19. Soketteki Verileri Kaydetme Socket.IO
- 20. Socket.io hata yönetimi
- 21. socket.io ile veri gönder
- 22. Socket.io çoklu olayları tetikleme
- 23. So3 library for Socket.io
- 24. Socket.io ve oturum verileri
- 25. Socket.io dinamik odalar
- 26. merge socket.io ve express.js oturumları
- 27. tcp client with socket.io (nodejs)
- 28. unity3D: socket.io kullanarak node.js'ye bağlan
- 29. Socket.IO https üzerinden iletişim kuramıyor
- 30. Düğüm + angularjs + Socket.io: Net :: ERR_CONNECTION_REFUSED
İdeal olarak, bağlantıda olay dinleyicileri (veya başka uygulama özellikleri) eklememelisiniz. – Shamps
Sunucu tarafında, bu bir ad alanı kullanılarak düzeltilebilir. Bu, sunucudaki istemcinin toe 'connect' olayı için de bir kere kullanmanıza izin verir. Ne yazık ki, biz doğrudan sunucu için '' 'değil:' io.once ('connect', (soket: SocketIO.Socket) => {}) 'TS'de bir hata verdi, io.of ise '/xyz').once('connect', (soket: SocketIO.Socket) => {}) 'iyi çalışıyor. – Lion