websocket客户端关闭后 服务端报错java.io.EOFException 完整解决方案
时间: 2023-07-08 07:08:47 浏览: 197
socket.io客户端及服务端
当WebSocket客户端关闭连接时,服务端会抛出`java.io.EOFException`异常。这是因为客户端关闭连接后,服务端仍然在等待客户端发送数据。
要解决这个问题,可以在服务端的`onClose()`方法中捕获`EOFException`异常,并忽略它。下面是一个完整的解决方案:
```java
@ServerEndpoint("/websocket")
public class WebSocketServer {
private Session session;
@OnOpen
public void onOpen(Session session) {
this.session = session;
}
@OnMessage
public void onMessage(String message, Session session) {
// 处理消息
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
try {
// 关闭连接
session.close();
} catch (IOException e) {
// 异常处理
} catch (EOFException e) {
// 忽略EOFException异常
}
}
@OnError
public void onError(Session session, Throwable throwable) {
// 异常处理
}
}
```
在`onClose()`方法中,我们使用`try-catch`语句捕获`EOFException`异常,并在`catch`块中忽略它。这样就不会抛出异常了。
阅读全文