Как отправить сообщение конкретному пользователю через simpMessagingTemplate.convertAndSendToUser? - PullRequest
0 голосов
/ 11 июня 2019

Я разрабатываю приложение, в котором конкретному пользователю отправляется уведомление о некоторых действиях, выполненных администратором. Я использую веб-сокеты для связи в реальном времени, но проблема в том, что моя очередь не может отправить сообщение указанному пользователю.

Я использую 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 или имя пользователя через заголовки. тот же результат.

Я ожидаю, что когда я отправляю сообщение из бэкэнда, оно должно доходить до предполагаемого пользователя, как в случае чата через веб-сокет, но в настоящее время сообщение не отправляется. Нужно ли отдельное отображение сообщений для пользователя и администратора, или я что-то упустил в конфигурации?

...