Я разрабатываю приложение, в котором конкретному пользователю отправляется уведомление о некоторых действиях, выполненных администратором. Я использую веб-сокеты для связи в реальном времени, но проблема в том, что моя очередь не может отправить сообщение указанному пользователю.
Я использую stomp js с spring-boot для отправки сообщений из бэкэнда во фронтэнд, который является угловым приложением. Когда я делаю это с темой, она работает нормально, но не с очередью. см. код ниже.
Я пытался отправить его по имени, электронной почте или даже по идентификатору. но сообщение не доходит до предполагаемого пользователя, или я должен сказать, что не знаю, куда оно отправляет или в какое место назначения оно отправляет.
Код контроллера
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 или имя пользователя через заголовки. тот же результат.
Я ожидаю, что когда я отправляю сообщение из бэкэнда, оно должно доходить до предполагаемого пользователя, как в случае чата через веб-сокет, но в настоящее время сообщение не отправляется.
Нужно ли отдельное отображение сообщений для пользователя и администратора, или я что-то упустил в конфигурации?