웹 서버를 통해 클라이언트에 비동기 메시지를 보내는 토네이도를 사용하여 작성된 서버가 있습니다. 이 경우 Mac에서 Chrome에서 실행되는 자바 스크립트 앱입니다. 클라이언트가 강제로 연결이 끊어지면이 경우 클라이언트를 잠자기 상태로 둠으로써 서버는 여전히 클라이언트에 메시지를 보내는 것으로 생각합니다. 또한 클라이언트가 절전 모드에서 깨어날 때 메시지는 한꺼번에 전달됩니다.클라이언트 연결이 끊어지면 웹 소켓 메시지가 대기열에 추가됩니다.
이러한 메시지가 대기/버퍼 처리되는 메커니즘은 무엇입니까? 책임자는 누구입니까? 왜 그들은 여전히 배달됩니까? 누가 소켓을 다시 연결합니까? 내 직관은 웹 소켓이 HTTP와 같은 요청/응답이 아니더라도 TCP를 기반으로하므로 ACK 패킷이 필요하다는 것입니다. 모바일 시대의 일시적인 하락에 대해 프로토콜을보다 강력하게 만들기 위해이 작업이 의도적으로 수행되고 있습니까?
흥미 롭습니다. 애플리케이션 잠자기로 인해 클라이언트에서 메시지를 처리하지 않는다면 그럴 가능성이 있습니다. 그러나 전체 클라이언트 컴퓨터가 절전 모드입니다. 내가 아는 한 네트워크 어댑터의 전원이 꺼지고 패킷을받을 때 ACK가 전송되지 않습니다. –
오오 .. 이것은 다른 종류의 수면입니다.이 경우 wireshark 또는 유사한 도구를 사용하여 패킷의 시퀀스를 추적하여 그림을 이해할 수 있습니다. – Andrew