문제

이 질문은 이미 여기에 답이 있습니다.

클라이언트-서버 시스템 인 양쪽 측면이 저에게 작성되었으며 서버가 연결 해제/죽을 때 클라이언트를 '오프라인'상태에 넣고 서버를 다시 사용할 수있을 때 자동으로 '온라인'을 다시 가져오고 싶습니다. .

첫 번째 부분에서는 채널 결함 이벤트를 듣고 클라이언트를 오프라인으로 설정하여 처리합니다. 그런 다음 서버에서 '핑'서비스를 호출하기 시작합니다 (30 초마다)이 살아있는 경우 부를 반환합니다. 그것이 살아 나면 클라이언트는 부울을 얻고 온라인으로 다시 전환합니다.

이 모든 것이 작동합니다. 내가 가진 문제는 클라이언트가 핑 서비스를 호출하고 서버가 다운되었을 때 응답이 전송되지 않으며 결국 약 2 분 후에는 엔드 포인트를 찾을 수 없다는 것입니다. 이 시점까지 나는 이미 3-4 개의 핑을 시도 했으므로 3-4 예외 양조가 있습니다.

내 질문은 어떻게 핑 서비스를 더 우아하게 다룰 수 있습니까? 이상적으로는 서비스가 온라인 상태인지 알려주는 서비스를 주기적으로 전화하고 싶지 않은 경우 즉시 알려줍니다.

도움이 되었습니까?

해결책

이건 어때 :

  • 서버 연결 해제를 감지하면 "핑"모드를 입력하십시오.
  • "Ping Mode"에서 서비스의 핑 방법에 대한 호출에 거의 즉시 답변해야하므로 클라이언트의 "SendTimeout"을 매우 짧은 것으로 설정합니다.
  • "Ping"이 성공적으로 작업되면 클라이언트 프록시를 다시 만들고 클라이언트의 "SendTimeout"을 원래 값으로 되돌려 놓습니다 (기본값은 1 분입니다.

이렇게하면 "핑 모드"에있는 경우 응답 (또는 타임 아웃)을 빠르게 얻고 서비스의 가용성을 빠르게 감지 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top