gpt4 book ai didi

java - Tomcat websocket管理和识别

转载 作者:行者123 更新时间:2023-11-28 23:27:30 25 4
gpt4 key购买 nike

我正在尝试实现一个网络套接字 session 管理器,我刚刚遇到了一个障碍,我希望有人能帮助我。

基本上,客户端将启动与我的 websocket 服务器端点的 web 套接字 session ,我将获取 HTTP 请求参数,解析它并订阅 web 服务生产者端点。 Web 服务将返回包含订阅标识符的响应,订阅标识符将用作键映射(连同 HTTP session ID)以添加到具有 session 对象的 java 映射缓存中。继续将数据发送到我发布的 Web 服务消费者端点。然后,我的应用程序将从生产者处接收到数据,使用每个数据包附带的订阅 ID,并在 map 缓存中找到正确的 session 以将数据发送回。

这是我的问题..

我注意到,如果客户端在浏览器中打开另一个选项卡并发送第二个订阅请求,它仍然会使用相同的 HTTP session ID 发送,但 tomcat 仍然能够将数据流式传输到正确的选项卡。这意味着 tomcat websocket 实现具有内置的多路复用处理机制。

为了排除一些不必要的细节,除非被问及,我还希望能够识别在同一 session ID 下多路复用的所有 channel 。但是我在 API 中找不到任何方法来识别它。因为我需要能够查找我的 map 缓存并删除已关闭选项卡的 session (这会在我的网络套接字端点中触发关闭方法),但我无法做到这一点,因为可能有许多套接字/ channel 与相同的 HTTP session ID 关联。

最佳答案

websocket 框架不提供任何此类实现。每个选项卡都会打开一个新套接字。您可以通过在启动 websocket 时在请求中添加一个 key 来维护 session 信息,并在服务器中检查该 key (例如 JSESSION id 值)的消息并相应地为请求提供服务。

关于java - Tomcat websocket管理和识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com