Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring框架中检查其他活动用户会话_Java_Spring_Jakarta Ee_Jms_Activemq - Fatal编程技术网

Java 如何在Spring框架中检查其他活动用户会话

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套接字发出推送通知以

我在stackoverflow问题上搜索了很多,但我找不到满足我要求的解决方案;如果任何人知道的参考,完全符合我的要求,请评论,否则回答它

我正在团队中使用Spring框架开发企业应用程序,我已经成功地在应用程序中使用ActiveMQ集成了“JMS”。 在此应用程序中,如果用户B在线,则用户A向用户B发送消息,否则不在线

我的问题是,在用户A向用户B发送消息之前,如何检查用户B会话是否处于活动状态

提前谢谢


Yasir Shabbir

这取决于您如何与用户B进行沟通

  • 使用web套接字发出推送通知以验证状态并将消息推送到用户B

  • 如果来自任何用户(在本例中为用户A),客户端可以定期轮询服务器以获取数据。如果用户B在线,那么只有yhe轮询可以发生,所以这就像用户B在线时收到用户a的消息一样


  • 您需要监视用户http会话的东西

    简单的方法是拥有一个地图或集合。当用户登录时,将usersId(或您用来标识他们的任何东西)放入该映射/集中,并将hat Id放入会话中。然后,当会话被破坏时,使用获取通知(这是您将获得的最接近SessionTimeOut的消息)。当会话被销毁时,将从映射/集合中删除用户ID


    (顺便说一句,有一个新的Spring项目:,我到目前为止还没有看到它。可能它包含了对该问题的支持。)

    如果您有少量客户端,一个简单的方法是将请求-回复消息与主题结合使用。让所有用户会话都听主题(
    pings
    或类似内容)。当客户机想要查看谁在线时,他们会发送一条消息(正文的内容无关紧要),并将
    JMSReplyTo
    jmscorrelationid
    头设置为标识他们正在侦听的临时队列以获取回复。侦听方将接收此消息并全部发回包含其ID的消息。这样的话,你在发送者身上就有了一个活的缓存,关于谁当前处于“在线”状态,缓存每隔几秒钟就会过期一次


    看看

    我正在使用Stomp web协议进行服务器推送,而不是长轮询!所以,如果一个stomp客户端连接/订阅了一个服务器,不是吗,这意味着用户是在线的。但是,如果有数千个用户通过web套接字连接到服务器,那么我该如何区分呢?哪条消息是给谁的用户的?好吧,所以我没有研究web套接字,但我认为基于http的cookie也可以在web套接字中访问。正确的?在这种情况下,只需将cookie映射到服务器中各自的会话即可。先生,您要转到另一个方向,我需要以上问题的答案。您指的是什么类型的会话:HTTP(Servlet)会话?在将消息放入JMS队列之前,检查用户B是否在线