2017-12-18 13 views
-3

웹 클라이언트와 이동 서버가 있습니다. 클라이언트는 처리 된 json 데이터를 보내고 서버는 json 응답을 반환합니다.클라이언트에 여러 응답 보내기

하지만 클라이언트에게 매우 느린 프로세스의 결과를 알리고 클라이언트가 프로세스를 중지하도록 허용하려면 어떻게해야합니까?

나는 새로운 요청을 업데이트 5-10 초 계속 보내 어쩌면 수 생각해 봤는데,하지만 매우 효율적인하지 않는 것, 그리고 그것은 나를 go mySlowFunc()

를 사용하여 내가 시작한 프로세스를 중지 할 수없는 것
+0

,이 이동 정말 관련이 없습니다 : 사용의

select { case result := <-successChan: return result, nil case <-timeoutChan: return "", nil } 

예 . – JimB

+0

[한 가지 방법이 있습니다] (https://stackoverflow.com/a/46891608/720999). – kostix

+0

웹 소켓을 사용하여 클라이언트와 서버 사이에서 전이중 개방 채널을 유지할 수 있습니다. 클라이언트와 서버간에주고받을 수 있습니다. 일반적으로 클라이언트에 업데이트 진행 상황을 푸시하는 데이 키를 사용할 수 있습니다. – msoliman

답변

0

느린 기능을 위해 "가드"를 만들 수 있습니다. 실행 시간을 제한합니다. 그렇지 않은 경우 결과를 반환하는 함수의 성공 함수를 반환합니다. 그렇지 않으면 기본값이 반환되고 함수가 취소됩니다. 코드의

예 : 당신은 당신이 이동에 솔루션을 구현하는 데 문제가있는 경우의 예를 가지고하지 않는 한 https://github.com/lisitsky/go-site-search-string