Spring stomp - messagesTemplate.convertAndSendToUser 不起作用

问题描述 投票:0回答:1

我正在尝试使用 stomp 向特定用户发送消息。我创建了一个类来确定 userId。 这是代码:

  • 登录控制器:
  • CustomHandshakeHandler(从来自 LoginController 的会话中获取 useId):
  • WebSocket配置:
  • 在客户端,订阅'/user/private':
  • 聊天控制器:

虽然我有两个用户(1 和 2)互相发送私人消息,但他们无法收到消息,但控制台可以记录他们的活动:

我该怎么做才能让他们都收到消息?

我尝试让客户订阅

/user/{username}/private
,但没成功。

java spring stomp
1个回答
0
投票

SimpMessagingTemplate#convertAndSendToUser
将在内部将目的地转换为
userDestinationPrefix + username + destination
(例如,/user/username/destination。其中
/user
是默认的 userDestinationPrefix)。因此可以使用以下脚本来订阅使用
this.template.convertAndSendToUser(userName, "/private", chatMessage);

发送的消息
const username = 'user1';
stompClient.subscribe(`/user/${username}/private`, message=> {
                            console.log(message.body)
                        });

要广播事件,请使用

SimpMessagingTemplate#convertAndSend
将消息发布到主题(例如 /topic/chatroom1),并在脚本中订阅该消息,如下所示。

stompClient.subscribe(`/topic/chatroom1`, message=> {
                            console.log(message.body)
                        });

参考:https://spring.io/guides/gs/messaging-stomp-websocket/

© www.soinside.com 2019 - 2024. All rights reserved.