2013-04-22 7 views
1

socket.io와 appjs를 사용하여 앱을 개발 중입니다. 사용자가 앱의 두 인스턴스를 시작하여 EADDRINUSE를 발생시킬 때 사용자에게 알림을 제공하는 데 문제가 있습니다.socket.io 서버가 연결되어 있는지 어떻게 알 수 있습니까?

Socket.io는 EADDRINUSE를 감지하지만 콘솔에 쓰여진 경고 만 수신합니다 (stdout 또는 stderr인지 확실하지 않음). 예외가 발생했거나 오류 매개 변수가있는 콜백이 필요하거나 최소한 연결이 정상인지 여부를 감지하는 플래그가 필요했습니다.

그냥 명확히하기 위해 서버 측에서이 작업을 수행하려고합니다. 클라이언트 측에서는 이미 클라이언트 - 서버 연결에 대한 시간 초과가 있습니다.

어떻게하면됩니까?

답변

2

EADDRINUSE는 넷 모듈에서 발생하는 오류입니다. 여기에있는 문서 : http://nodejs.org/api/net.html#net_server_listen_port_host_backlog_callback

간단히 말해서 오류를 처리 할 수있는 .on('error'에 대한 콜백을 제공해야합니다.

server.on('error', function (e) { 
    if (e.code == 'EADDRINUSE') { 
    console.log('Address in use'); 
    } 
}); 
+0

오류 처리기를 추가하면 오류가 발생합니다. socket.io는 비동기 적으로 작동하기 때문에 많은 의미가 있습니다. 고맙습니다 –

관련 문제