2011-12-17 4 views
7

사용자가 socket.io를 사용하여 노드 서버에 연결할 수있는 페이지가 있지만 서버에 소켓을 한 번만 열어 둘 수 있습니다 (계정 ID를 전달하고 배열에 저장할 때만 사용).) 그리고 이것은 99 %의 시간 동안 잘 동작합니다. 문제는 때로는 사용자가 연결을 끊을 때 서버 측 연결 끊기 이벤트가 어떤 이유로 시작되지 않기 때문에 잠긴 클라이언트 배열에서 계정을 지울 수 없다는 것입니다.소켓이 아직 연결되어 있는지 확인하는 방법?

이전 소켓 연결 (ID가있는)이 아직 활성화되어 있는지 확인하는 방법이 있습니까? (따라서 이전 연결을 지우고 다시 연결할 수있는 경우)

+0

이 매트에 대한 해결책을 찾았습니까? – SatheeshJM

답변

4

하트 비트가 true (기본값)로 설정되어 있는지 확인하십시오. 제한 시간이 경과하면 자동으로 연결이 끊어집니다. 그러나 하트 비트가 작동하지 않는다는 버그 보고서가있었습니다. Socket.IO의 최신 버전을 사용하고 있는지 확인하십시오 (버그 상태가 확실하지 않습니다).

여전히 도움이 필요한 경우, 사용자가 다시 연결을 시도 할 때 이전 연결에 핑을 보낼 수 :

서버에서 '핑'을 방출하고, 경우 클라이언트에서 '퐁'으로 응답 연결이 아직 살아 있습니다. ping 시간이 초과되면 (예 : 20 초) 사용자가 다시 연결할 수 있도록 연결을 수동으로 끊습니다. ping을 사용하여 다른 클라이언트가 연결을 시도하고 있다는 것을 원본 클라이언트에 알리고 그 결과에 대한 UI를 향상시킬 수 있습니다.

관련 문제