Java 如何在Spring框架中检查其他活动用户会话
我在stackoverflow问题上搜索了很多,但我找不到满足我要求的解决方案;如果任何人知道的参考,完全符合我的要求,请评论,否则回答它 我正在团队中使用Spring框架开发企业应用程序,我已经成功地在应用程序中使用ActiveMQ集成了“JMS”。 在此应用程序中,如果用户B在线,则用户A向用户B发送消息,否则不在线 我的问题是,在用户A向用户B发送消息之前,如何检查用户B会话是否处于活动状态 提前谢谢Java 如何在Spring框架中检查其他活动用户会话,java,spring,jakarta-ee,jms,activemq,Java,Spring,Jakarta Ee,Jms,Activemq,我在stackoverflow问题上搜索了很多,但我找不到满足我要求的解决方案;如果任何人知道的参考,完全符合我的要求,请评论,否则回答它 我正在团队中使用Spring框架开发企业应用程序,我已经成功地在应用程序中使用ActiveMQ集成了“JMS”。 在此应用程序中,如果用户B在线,则用户A向用户B发送消息,否则不在线 我的问题是,在用户A向用户B发送消息之前,如何检查用户B会话是否处于活动状态 提前谢谢 Yasir Shabbir这取决于您如何与用户B进行沟通 使用web套接字发出推送通知以
Yasir Shabbir这取决于您如何与用户B进行沟通
您需要监视用户http会话的东西 简单的方法是拥有一个地图或集合。当用户登录时,将usersId(或您用来标识他们的任何东西)放入该映射/集中,并将hat Id放入会话中。然后,当会话被破坏时,使用获取通知(这是您将获得的最接近SessionTimeOut的消息)。当会话被销毁时,将从映射/集合中删除用户ID
(顺便说一句,有一个新的Spring项目:,我到目前为止还没有看到它。可能它包含了对该问题的支持。)如果您有少量客户端,一个简单的方法是将请求-回复消息与主题结合使用。让所有用户会话都听主题(
pings
或类似内容)。当客户机想要查看谁在线时,他们会发送一条消息(正文的内容无关紧要),并将JMSReplyTo
和jmscorrelationid
头设置为标识他们正在侦听的临时队列以获取回复。侦听方将接收此消息并全部发回包含其ID的消息。这样的话,你在发送者身上就有了一个活的缓存,关于谁当前处于“在线”状态,缓存每隔几秒钟就会过期一次
看看我正在使用Stomp web协议进行服务器推送,而不是长轮询!所以,如果一个stomp客户端连接/订阅了一个服务器,不是吗,这意味着用户是在线的。但是,如果有数千个用户通过web套接字连接到服务器,那么我该如何区分呢?哪条消息是给谁的用户的?好吧,所以我没有研究web套接字,但我认为基于http的cookie也可以在web套接字中访问。正确的?在这种情况下,只需将cookie映射到服务器中各自的会话即可。先生,您要转到另一个方向,我需要以上问题的答案。您指的是什么类型的会话:HTTP(Servlet)会话?在将消息放入JMS队列之前,检查用户B是否在线