我正在开发一个应用程序,其中有关管理员执行的某些操作的通知会发送给特定用户。我正在使用网络套接字进行实时通信,但是问题是我的队列无法将消息发送给指定的用户。
我正在将stomp js与spring-boot一起使用,以将消息从后端发送到前端,这是一个有角度的应用程序。当我对主题进行操作时,它工作正常,但不适用于队列。请参阅下面的代码。 我尝试通过名称,电子邮件甚至ID发送邮件。但该邮件未到达预期的用户,或者我应该说我不知道它向何处发送或向哪个目的地发送。
控制器代码
public void sendNotificationToUser(@Payload Request response) {
log.info("test user");
simpMessagingTemplate.convertAndSendToUser(<tried with Id, with name, with e-mail>, "/queue/notice", response );
}
我的配置
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/notification").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
config.enableSimpleBroker("/topic", "/queue");
}
}
接受消息的角度代码。
_this.stompClient.subscribe("/queue/notice", function(data){
console.log(data);
_this.notifications.emit(data);
}, {});
}
我还尝试通过标头发送ID或sessionId或用户名。结果相同。
我希望当我从后端发送消息时,它应该到达预期的用户,就像通过网络套接字进行聊天的情况一样,但是当前该消息没有发送。 我需要为用户和管理员使用单独的消息映射,还是在配置中缺少某些内容?