2012-03-12 3 views
6

socket.io를 사용하여 node.js 서버를 통해 통신을 수행하는 간단한 웹 응용 프로그램을 만들었습니다.socket.io가 재실행 연결을 다시 연결합니까?

사용자가 연결할 때 노드는 클라이언트에게 특정 이벤트를 구독하라는 정보를 다시 전달합니다. 그건 잘 작동합니다.

그러나 브라우저를 유휴 상태로 설정하면 클라이언트는 이벤트 구독을 두 번 끝냅니다. 구독 프로세스는 다음과 같이 작동

socket.on('adduser', function(data) 
    <snip> 
    socket.emit('nodeinfo', {node_id: NODE_ID}); 
    socket.emit('update', {msg: 'you are connected'}); 

소켓 :

사용자가 Node.js를이 'adduser 명령'메시지

그 기능에 hapen 두 가지 주요 사항을 얻는다 연결

이 있습니다. emit ('nodeinfo')는 클라이언트에 이벤트 구독을 알립니다.

그래서 클라이언트가

socket.on('nodeinfo', function(data) { ... } 

을 가지고 것은 'adduser 명령'에서을 console.log() 함수의 아무도는 노드 측에서 다시 호출되지 얻을, 그것은 두 번 '당신이 연결되어'말하지 않을 것입니다. 유일한 일은 node.js가 nodeinfo를 다시 내보내는 (또는 클라이언트가 생각하기 때문에) 클라이언트가 다시 가입하게됩니다.

socket.io에서 어떻게 다시 연결되는지 그리고 어떻게 이런 일이 발생할 수 있는지 설명 할 수 있습니까?

답변

4

기본적으로 클라이언트는 연결이 끊어진 후에 다시 연결을 시도합니다. 원하는 경우 다음과 같이 변경할 수 있습니다. socket.io client

다시 연결하면 서버에 새 연결이 표시되고 이전 연결과 새 연결을 식별하는 논리를 구현하는 것은 사용자의 책임입니다. 그래서 실제로 - 클라이언트가 서버에 정보를 보낸 후에 "연결"에 adduser 논리를 구현하는 대신 (또는 연결하지 않음) 수행하십시오.

+0

예. 결과와 똑같이 우리 앱에서 일어나는 일을 알아 차릴 수 있습니다. 감사 – Xin

관련 문제