我正在实现一个简单的Spring Boot应用程序,该应用程序具有通过WebSocket协议连接的一定数量的用户。该应用程序每5秒钟将个人统计信息发送给每个用户。
我正在使用@SendToUser
注释来区分用户和个性化统计信息。
在我看来,用@SendToUser
注释的方法只能用作消息处理方法。这意味着,为了接收统计信息,用户应首先将消息发送到Spring Boot应用程序,然后将调用消息处理方法,然后才将统计信息发送回去。< / p>
结果,WebSocket协议现在看起来确实非常有用:该请求仍然由用户(确切地说是由用户的浏览器)发起。唯一的优点是您不必在每次要检索新统计信息时都打开新连接。
是否有可能完全消除从用户发送到应用程序的消息?例如,要每5秒检索一次当前连接的用户列表,然后遍历该列表并将消息逐个发送给每个用户?还是用户仍然需要启动统计信息检索?
答案 0 :(得分:1)
您可以将simpMessagingTemplate.convertAndSendToUser(username, "/destination", message);
注入任何spring bean并将消息发送给用户。
SimpUserRegistry
您可以通过注入{{1}} bean来检索已连接用户的列表。