2017-09-22 27 views
0

我有內存泄漏,但在代碼中找不到任何錯誤。Node.js套接字內存泄漏

Basicallly我連接到3個不同的IP從他們接收數據。這工作正常1-2次。但是第三次​​我總是得到「ECONNREFUSED」或「數據內存泄漏,11個數據監聽器添加」錯誤。

雖然我每次都關閉套接字...

沒有如果(K == 1)邏輯,該計劃將不會離開socket.on(「數據」)的功能...我不知道爲什麼。

test[0] = '10.5.0.11'; 
test[1] = '10.5.0.15'; 
test[2] = '10.5.0.17'; 
var x = -1; 
var k=0; 

function testIP(test) { 

    x++; 
    if(socket.destroyed == true) { 
    socket.connect('2711', test[x], function() { 
     socket.write('d\n'); 
     k=1; 
    }); 
    } 

    socket.on('data', function(data) { 
    if(k==1) { 
     data = data.toString(); 
     console.log(data); 
     if(x<test.length-1) { 
      socket.destroy(); 
      k=0; 
      testIP(test); 
     } 
     else if(x == test.length-1) { 
      k=0; 
      x=-1; 
      socket.destroy(); 
      setInterval(testIP, 2000, test); 

     } 
    } 
    }); 
} 
testIP(test); 

回答

0
socket.setMaxListeners(0); 

在函數的開始解決了這個問題;-)