Как подключиться к Spring WebSocket-запросу в бэкэнде? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь добавить соединение с веб-сокетом в мое приложение весенней загрузки, я привык иметь дело только с протоколом Https, но мне нужно иметь это соединение с веб-сокетом, чтобы продолжать отправлять уведомления в веб-интерфейс. Я добавил эту зависимость <org.springframework.boot:spring-boot-starter-websocket:2.0.0.RELEASE>, потому что по какой-то причине мое приложение не выполняет версию 2.4.5 Spring-Starter-Websocket.

У меня есть один класс конфигурации для включения этого соединения, вот этот класс код:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

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

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

Для обработки соединения я создал этот метод в моем контроллере:

@Autowired
SimpMessagingTemplate simpMessagingTemplate;

@MessageMapping("/news")
    public void broadcastNews(@Payload String message) {
        this.simpMessagingTemplate.convertAndSend("/topic/news", message);
    }

Чтобы проверить это соединение, я использую этот сайт: https://www.websocket.in/test-online, и я пытаюсь подключиться к этому URL: wss //: localhost: 8085 / mywebsockets

Моя консоль отвечает, когда я пытаюсь подключиться:

2020-02-25 10:32:09.707  INFO 16000 --- [MessageBroker-1] o.s.w.s.c.WebSocketMessageBrokerStats    : WebSocketSession[0 current WS(0)-HttpStream(0)-HttpPoll(0), 0 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], outboundChannelpool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], sockJsScheduler[pool size = 3, active threads = 1, queued tasks = 2, completed tasks = 0]

Сайт не подключается, но не выдает никакой ошибки, я ждал более 10 минут, и больше ничего не происходит.

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

1 Ответ

0 голосов
/ 26 февраля 2020

Если вы хотите подключиться к wss//:localhost:8085/mywebsockets, вам нужно установить точку входа на этот URL, а не на addEndpoint("/api"). Вы должны разрешить запросы на отправку из разных источников для тестирования:

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

Вы можете использовать расширение chrome, например, для проверки соединения через веб-сокет: https://chrome.google.com/webstore/detail/apic-complete-api-solutio/ggnhohnkfcpcanfekomdkjffnfcjnjam

Выбрать API-тестирование -> ws и подключение к http://localhost:8085/mywebsockets, клиент автоматически переключит протокол на ws://

Этот учебник помог мне правильно все настроить: http://kojotdev.com/2019/07/using-spring-websocket-stomp-application-with-vue-js/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...