我正在使用 Jetty 的 WebSocket API 将数据流式传输到客户端。一旦客户端连接到服务端,服务端会定期向客户端发送json数据。
@WebSocket
public class WSHandler {
// send data every 10 seconds
public static final long PERIOD = 10000L;
@OnWebSocketClose
public void onClose(int statusCode, String reason) {
}
@OnWebSocketError
public void onError(Throwable t) {
}
@OnWebSocketConnect
public void onConnect(Session session) {
System.out.println("Connect: " + session.getRemoteAddress().getAddress());
try {
while(...) {
session.getRemote().sendString(json);
Thread.sleep(PERIOD);
}
} catch (IOException | InterruptedException e ) {
e.printStackTrace();
}
}
@OnWebSocketMessage
public void onMessage(String message) {
}
}
我想要做的是,一旦客户端决定终止连接,服务器将停止发送 json 数据(它确实停止了,但看起来并不优雅,在服务器端抛出 EOFException、IOException 或损坏的管道或其他东西)。
我已经尝试过使用一个全局布尔变量,该变量打开false
并将onClose
其放置在while
循环中,但这似乎不起作用。
我应该在onConnect
方法的 while 循环中添加什么来终止数据的发送而不抛出异常?