2012-05-11 17 views
25

Düğüm 0.6.16 çalıştırıyorum ve tüm modüller en az npm (win7 x64) göre güncel. Herhangi bir kopukluk olmamasına rağmen, bir süre sonra, bir süre sonra, tarayıcının herhangi bir veri almadığını söyleyemedim. Chrome'da FF üzerinde daha sık görünüyor.NodeJS soketi IO rastgele yayılmayı durdurur mu?

socket.on('disconnect', function(){console.log('disconnected')}); 

(Ben olabilirdi demek ama sonra günlüğü almak ve socket.io oto bağlanır, söz konusu olay için ateşler asla bu - Bu durumda, hiçbir şey sadece çalışma durur olur ve bu en sık olduğu Etkinlik).

Nereye bakacağımı bilmiyorum. NodeJS hala bir kalp atışı kaydeder, ancak bir nedenden dolayı bağlantı devam etmemektedir. Tabii ki (herhangi bir?) Tarayıcının sekmesinde değişiklik yaptıktan sonra, pencere/sekme artık odaklanmadığı için socket.io veri almayı durdurur mu? Yanlış olabilirdim ve odak ile ilgili olmayabilir, ama bu benim birincil önceliğim. fikri olan var mı?

Düzenleme: istemci tarafı oldukça yalındır:

socket = io.connect('http://xxx.xxx.xxx.xxx:8081', {secure:false, 'reconnect': true, 'reconnection delay': 500, 'max reconnection attempts': 10});  
      socket.on('connect', function(){console.log('connected')}); 
      socket.on('message', function(data){//do something);   

      socket.on('disconnect', function(){console.log('disconnected')}); 

Edit2: en son socket.io sürümü (1.2.1) ve düğüm v0.10.35 güncelledikten sonra hala aynı var konu. gönderiliyor artık ve hala işlev her saniye çalışır

function checkSocket(){ 
    if(socket){ 
     if(!socket.connected){ 
      console.log('socket disconnected'); 
      clearInterval(intv); 
     } 
    }  
} 

intv = setInterval(checkSocket, 1000); 

iken bir şey almazsa bile, asla, soket bağlantısı olduğunu kaydeder: Daha da şaşırtıcı, ben istemci aşağıdaki kod parçasını eklendi kalp atışı ..

Edit3: Tamam, bu benim sunucu yan kodumda oldu, bazı soket yok edildi. Ayrıca v1.x ve zorla yeniden bağlanma için güncellendi.

+0

halen aynı seti (node.js ve socket.io), tüm tarayıcılarda mükemmel benim için çalışıyor yapıyor im, istemci tarafında kod – Dhiraj

+0

bazı Sadece bazı kod eklemiş Bize gösterebilir olabilir :) – Eric

+1

Bunun artık çözülmesi gerektiğini düşünüyorum. –

cevap

0

Daha fazla sorunum olmadığı için, arka uç kodumu paylaşacağımı düşündüm. Sorunum, soketin üzerine yazmam gerektiğiydi.

var clients = {}; 
var app = require('https').createServer(options), 
io = require('socket.io').listen(app); 
app.listen(8081); 

io.sockets.on('connection', function(__socket) { 
    var id = __socket.id; 
    var ip = __socket.request.connection.remoteAddress; 
    clients[id] = {socket:__socket, ip:ip}; 
    clients[id].socket.on('disconnect', function() { 
     delete clients[id];  
    }); 
});