Tomcat 8.0.33 的 Websocket 实现在调用 sendText() 方法时不会立即抛出 IOException(服务器端)

Websocket implementation of Tomcat 8.0.33 doesn't throw an IOException immediately when sendText() method is called(server side)

我正在使用 Apache Tomcat 8.0.33.
我正在浏览关于 RemoteEndpoint.Basic 的 Java 文档 这表示 sendText(String text) 阻塞直到所有消息 已转发
但我注意到当客户端失去互联网连接时 sendText() 方法在服务器端被调用,它不会抛出 IOException 立即和方法 returns 正常。
稍后抛出IOException并调用onError()方法。
是 这是正常行为吗? sendText() 方法不应该阻塞直到 所有消息都已成功传输或抛出 如果有任何问题立即IOException?

是的,这种行为是正常的。

根据客户端断开连接的方式,服务器可能不知道并且消息将位于网络缓冲区中,直到网络堆栈发现 客户走了。