SendQueue 관련 질문입니다.

안녕하세요.

SendQueue에 여러 작업이 대기중인경우, 서버로부터 응답실패 시 자동으로 다음 작업을 바로 실행하는지 궁금합니다.

만약 자동으로 다음 요청을 서버로 보내게된다면, 순서를 보장할 수 없게 될 것 같아서요.
에러발생시 ErrorEventHandler 에서 SendQueue 를 중지하는 방법을 생각하고있는데, 더 깔끔한 방법이 없는지 궁금합니다.

서버로부터 응답실패한경우 성공할때까지 서버로 작업을 반복요청하고, 성공한 후에 다음 작업을 진행하고싶습니다.

서버로 작업을 반복요청하는 것은 구현되어있으나, SendQueue를 Error Callback 에서 수동으로 중지시켜줘야하는지 궁금합니다.
만약 그렇다면, Callback은 Update 에서 Poll 함수를통해 실행된다고 알고있는데 Poll 함수가 실행되기 이전에 SendQueue 에서 다음작업을 실행하게될 가능성이 있는지 궁금합니다.( 다른 Thread 에서 실행되기 때문에 )

감사합니다.

안녕하세요 개발자님
문의하신 내용에 대해 순차적으로 안내드리겠습니다.

  1. 큐에 A,B,C가 들어있는데 A가 실패 응답이 왔을 경우,
    서버에서는 실패이더라도 응답이 왔기 때문에 그 다음 B 요청을 보내게 됩니다.

  2. 서버로부터 응답이 실패한 경우 성공할 때까지 반복요청하는 것은 좋으나,
    이 경우 일정 횟수까지만 시도 후 요청 시도를 그만두고 메인 화면으로 나가는 등의 작업이 필요합니다.
    (동일한 요청이 반복해서 실패하는 경우 무언가 문제가 있는 것이니 게임 초기화 작업)

  3. 반복요청의 경우 단순히 동일한 요청을 SendQueue에 다시 삽입하는 것으로 구현이 가능하지만,
    순서가 중요한 상황에서는 SendQueue를 중지 후
    해당 요청을 동기/비동기로 다시 요청하는 것으로 순서를 제어할 수 있습니다.
    다만 마지막에 말씀하신 것 처럼 Callback은 메인쓰레드에서 실행되고,
    SendQueue는 별도의 쓰레드에서 동작하기 때문에
    다음 함수가 서버로 요청됨과 동시에 Callback이 호출되어서 다음 작업이 실행 될 수 있습니다.
    결론적으로 말씀하신 상황에서 순서제어를 하면서 동일한 요청을 반복요청하기 위해서는
    SendQueue를 사용하시는 것 보다는
    비동기 함수를 담을 수 있는 deque를 만드셔서 활용하시는 것이 더 좋을 것 같습니다.

감사합니다.

좋아요 1