我们有一个使用 tornado 编写的服务器,它通过 websockets 向客户端发送异步消息。在本例中,是在 Mac 上的 Chrome 中运行的 javascript 应用程序。当客户端被强制断开连接时,在这种情况下通过让客户端休眠,服务器仍然认为它正在向客户端发送消息。此外,当客户端从睡眠中醒来时,消息会以突发方式传递。
这些消息排队/缓冲的机制是什么?谁是负责的人?为什么他们仍然交付?谁在重新连接套接字?我的直觉是,即使 websocket 不像 HTTP 那样请求/响应,它们仍然应该需要 ACK 数据包,因为它们是基于 TCP 构建的。这样做是为了使协议对移动时代的暂时下降更加健壮吗?