首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Tomcat关闭/清除服务器端的websocket连接

如何使用Tomcat关闭/清除服务器端的websocket连接
EN

Stack Overflow用户
提问于 2022-11-06 12:54:41
回答 1查看 89关注 0票数 0

我在Tomcat上使用jakarta.websocket,我希望我的服务器在一段时间后关闭与连接客户端的websocket连接。为此,我调用了session.close(),它确实触发了

代码语言:javascript
复制
@OnClose
public void end() {}

但是,我看到客户机(可能没有遵从结束握手)仍然能够通过上一次(据说是关闭的)会话向服务器发送二进制消息。这是意料之中吗?双方是否确实需要同意服务器关闭/清除会话?我还想为会话设置几毫秒的超时时间,但我不知道这样做是否有效。或者通过Tomcat杀死底层TCP连接,但我还是不知道如何做到这一点。

最终,我如何强制将会话从服务器端彻底清除,从而使客户端无法使用其上一次会话到达服务器?

我要从一个可运行的地方关闭它:

代码语言:javascript
复制
private class disconnector implements Runnable {
    public void run() {
        try {
            session.close();
        } catch (IOException e) {
            // So far, I have not noticed any exceptions here
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-11-15 08:17:50

您想在OnMessage中像下面这样控制这个吗?也就是说,只有在有有效的会话时,才能回复。否则忽略那个客户端会话。

代码语言:javascript
复制
@OnMessage
public void message(final String message, final javax.websocket.Session session) throws IOException {
 for (final Session s : session.getOpenSessions()) {
     final Basic endpoint = s.getBasicRemote();
     endpoint.sendText(message);
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74336017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档