Уведомления Spring Boot WebSockets

В моем приложении Spring Boot я пытаюсь реализовать функцию уведомлений на основе WebSockets.

Я предоставил следующую конфигурацию:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/notifications").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic", "/queue");
    }

}

и пытаюсь использовать SimpMessagingTemplate для отправки сообщения со стороны сервера конкретному клиенту (пользователю).

@Autowired
private SimpMessagingTemplate simpMessagingTemplate;

public void sendMessages() {
    simpMessagingTemplate.convertAndSendToUser(%user%, "/horray", "Hello, World!");
}

Сейчас я не понимаю нескольких вещей:

  1. Какое значение следует использовать для параметра %user% метода simpMessagingTemplate.convertAndSendToUser?

  2. Какова корреляция между моей конечной точкой /notifications, зарегистрированной в методе WebSocketConfig.registerStompEndpoints, и параметром destination метода simpMessagingTemplate.convertAndSendToUser и как правильно его использовать?

  3. Как защитить пользователей от чтения чужих сообщений на клиенте?


person alexanoid    schedule 30.10.2016    source источник


Ответы (1)


Параметр user — это имя, которое использует клиент при подписке на пункт назначения, см. Справочник по Spring Глава 26.4.11 Направления пользователя

Пункт назначения и конечная точка:

  • Конечная точка — это URL-адрес, по которому прослушивается веб-сокет/брокер сообщений.
  • Назначение — это тема или тема в брокере сообщений.
person Ralph    schedule 30.10.2016
comment
Спасибо. Как защитить пользователей от чтения чужих сообщений на клиенте? Например, один клиент может использовать то же имя, что и другой... - person alexanoid; 30.10.2016
comment
Это явно новый вопрос. - person Ralph; 30.10.2016
comment
Я так не думаю. Это было в моем первоначальном вопросе. - person alexanoid; 30.10.2016
comment
извините, я упустил из виду пункт 3 - вы читали документацию по весенней безопасности: docs.spring.io/spring-security/site/docs/current/reference/html/ - person Ralph; 30.10.2016