2017-05-23 6 views
3

서버가 때때로 응답하지 않는 원격 Datasnap REST 메서드에 대한 호출이 있으며이를 감지하고 응용 프로그램을 고정 된 상태로 두지 않고 종료해야합니다.Timeout 속성을 에뮬레이트하는 방법은 무엇입니까?

DSRestConnection과 DSRestConnection에 연결된 모든 원격 메소드가 정의 된 Datasnap REST 클라이언트 모듈을 사용합니다. Timeout 속성을 찾을 수 없습니다. AFAIK Datasnap 서버에서만 시간 초과를 설정할 수 있지만 때로는 클라이언트가 서버에 연결이 끊어지기 때문에 클라이언트에서 Timeout을 발생시켜야합니다.

타임 아웃이 없는데 어떻게 에뮬레이트 할 수 있습니까? 거기에 도움이되는 수업이 있습니까? 아니면 처음부터 코드화해야합니까? 이 경우 이동 방법은 보조 위협에 대한 원격 호출을 수행하는 것이므로 주 스레드는 여전히 응답하며 Timer와 같은 것을 사용하여 호출이 제 시간에 성공했는지 확인합니다.

나는 어떤 제안이라도 고맙게 생각합니다. 고맙습니다.

+0

LAN 또는 WAN에 있습니까? 대기 시간이 짧은 LAN의 경우, 시간 초과를 감지하는 더 간단한 방법은 동일한 서버 시스템을 실행하는 백그라운드 스레드에서 서버를 "가동"하는 것입니다. – MartynA

+0

안녕하세요, Martyn, 답변 해 주셔서 감사합니다. 아니요, WAN 전화입니다 (Datasnap REST Server는 Amazon의 클라우드에서 호스팅됩니다). "서버 펄싱"이란 무엇입니까? –

+0

펄싱? 오, 단지 서버의 낮은 오버 헤드 방법을 일정한 간격으로 호출하여 응답을 받는지 확인하십시오. 물론 완벽한 테스트는 아니지만, 실제로 관심이있는 메소드의 타임 아웃을 기다리는 것보다 서버가 빠르게 응답하지 않는 것을 감지 할 수 있습니다. – MartynA

답변

2

TDSRestConnectionHTTP 속성을 통해 기본 TDSHTTP 클라이언트에 액세스해야합니다. TDSHTTP 클라이언트는 ConnectTimeoutReadTimeout 속성을 제공합니다. 아마도 후자가 당신이 찾고있는 것일 것입니다.

+0

고마워, 그게 완벽 할거야. 응용 프로그램을 고정 해제 할 두 번째 스레드를 만들고 있지만 작동시키지 못하면 피할 수 있으면 완벽 할 것입니다. 나는 지금 그것을 시도 할 것이다. –

+0

고맙습니다, 잘 작동합니다 :-). –