2014-10-15 2 views
0

"net"라이브러리를 사용하여 nodeJs에서 TCP 연결을 만듭니다.NodeJS의 TCP/IP 소켓에 다시 연결

root.socket = net.createConnection(root.config.port, root.config.server); 

원격 서버가 다운되어 있고 다시 연결될 때 오류가 발생했습니다.

root.socket.on('error', function(error) { 
     console.log('socket error ' + error); 

     root.reconnectId = setInterval(function() { 
      root.socket.destroy(); 
      try { 
       console.log('trying to reconnect'); 
       root.socket = net.createConnection(root.config.port, root.config.server); 
      } catch (err) { 
       console.log('ERROR trying to reconnect', err); 
      } 

     }, 200); 
} 

문제는 원격 서버 종료시에도 오류가 발생하고 nodeJS 서버가 중지된다는 것입니다.

events.js:72 throw er; // Unhandled 'error' event ^Error: connect ECONNREFUSED at errnoException (net.js:904:11) at Object.afterConnect [as oncomplete] (net.js:895:19)

+0

및? 질문이 뭐야? – micnic

+0

질문이 게시되기 전에 미안하게 게시했습니다. –

+0

이 오류는 오류 수신기를 추가 한 후에도 발생합니까? – micnic

답변

1

당신은이 같은 필요합니다

var net = require('net'); 

var c = createConnection(/* port, server */); 

function createConnection(port, server) { 
    c = net.createConnection(port, server); 

    console.log('new connection'); 

    c.on('error', function (error) { 

     console.log('error, trying again'); 

     c = createConnection(port, server); 
    }); 

    return c; 
} 

귀하의 경우 새 연결을 만들하지만 당신은 오류 리스너를 부착하지 마십시오에서를, 오류가 실행 루프에 다른 곳에서 발생 "try/catch"문으로 catch 할 수 없습니다.

P. "try/catch"문을 사용하지 않으려면 Node.JS의 오류 처리가 오류 수신기와 도메인을 사용하여 수행되므로 JSON.parse() 또는 동 기적으로 실행되는 다른 함수에 대해서만 유용 할 수 있습니다.

+0

답변 해 주시면 감사하겠습니다! –