ServerOfflineHandler 호출 후 다시 호출될 때, 이전에 받지 못한 메시지를 받을 수 있나요?

플레이 테스트 중에 미처 준비하지 못했던 중요한 부분을 발견해서 질문드립니다.

플레이 중, 인터넷 회선의 문제인지 netClient.ServerOfflineHandler가 호출되었다가, 0.5초 후 다시 netClient.ServerOnlineHandler가 호출되었습니다. 현재 AutoConnectionRecovery를 키고 있는 상태인데요.

환경 상태: -netServer의 AutoConnectionRecovery = true

시간의 흐름에 따른 시뮬레이션:

  1. Client A,B,C,D 총 4명의 플레이어가 p2p 연결이 되어있으며, c2c 통신 중.
  2. 00:05 Client B가 netClient.ServerOfflineHandler이 호출되었음
  3. 00:06 Client D가 A,B,C에게 "Hello World"라는 메시지를 던짐.
  4. 00:08 Client B가 netClient.ServerOnlineHandler이 호출되었음.

위 상황에서, Client B는 ServerOnlineHandler가 호출됨과 동시에, 받지 못했던 메시지들을 한꺼번에 받을 수 있나요?
ex) 00:08 Client B가 다시 연결됨과 동시에 D로부터 이전에 발송되었던 "Hello World"라는 메시지를 받나요? 아니면 못 받았던 메시지는 별도 처리를 하지 않으면 받을 수 없나요?

마지막으로, 위 상황을 테스트 해보고 싶은데 위 같은 상황을 직접 구성하여 시뮬레이션 해볼 수 있는 방법이 있을까요?

위의 시나리오에서 D가 RMI를 보낼때 RmiContext를 Reliable로 설정해서 보냈으면 B가 Online이 된 후 해당 메시지를 수신하는 것을 보장합니다. Unreliable인 경우 보장되지 않습니다.

시뮬레이션을 해보시려면 Windows PC는 이더넷 속성에서 사용 안함으로 설정하거나 핸드폰의 경우 비행기모드를 이용하여 테스트가 가능합니다.