我在Tomcat上使用jakarta.websocket
,我希望我的服务器在一段时间后关闭与已连接客户端的WebSocket连接。
@OnClose
public void end() {}
然而,在一些情况下,我看到客户(可能不遵守关闭握手)仍然能够通过以前的(应该是关闭的)会话。这是预期的吗?是否确实需要双方同意服务器关闭/清除会话?我也想过为会话设置几毫秒的超时,但我不知道这是否会工作得很好。或者可能以某种方式从Tomcat中杀死底层的TCP连接,但我再次不知道如何做到这一点。
最后,我如何强制会话从服务器端完全清除,从而使客户端无法使用其先前的会话访问服务器?
我将从可运行的对象关闭它:
private class disconnector implements Runnable {
public void run() {
try {
session.close();
} catch (IOException e) {
// So far, I have not noticed any exceptions here
}
}
}
1条答案
按热度按时间zzlelutf1#
你想在OnMessage中控制它,如下所示?即只有当有有效的会话时才响应。否则忽略该客户端会话。