Я создал базовый веб-сокет с учебником. Вот конфигурация: @Configuration @EnableWebSocketMessageBroker общедоступный класс WebSocketConfig расширяет AbstractWebSocketMessageBrokerConfigurer {...

5
degath 8 Янв 2021 в 17:51

1 ответ

Лучший ответ

Мне удалось решить эту загадку, поэтому я делюсь с вами своими выводами.

Во-первых, я обнаружил информацию, что простой брокер сообщений в памяти с этим не справляется:

    /*
     * This enables a simple (in-memory) message broker for our application.
     * The `/topic` designates that any destination prefixed with `/topic`
     * will be routed back to the client.
     * It's important to keep in mind, this will not work with more than one
     * application instance, and it does not support all of the features a
     * full message broker like RabbitMQ, ActiveMQ, etc... provide.
     */

Но это вводило в заблуждение, поскольку этого легко добиться с помощью аннотации @SendToUser. Кроме того, важно то, что теперь на стороне клиента вам нужно добавить дополнительный префикс /user/ при подписке на канал, чтобы решение было таким: 1...............................................................................................................................................................................................................................................................

  1. На стороне сервера: замените @SendTo("/topic/messages") на @SendToUser("/topic/messages").
  2. На стороне клиента: /topic/messages в /user/topic/messages.
3
degath 11 Янв 2021 в 12:59