Я не могу заставить WebSocketStompClient работать - PullRequest
0 голосов
/ 25 мая 2020

Я просто хочу подключиться к серверу WebSocket, используя Java и Spring.

Вот мой код, я не уверен, что делаю не так.

Может быть, мне не хватает какой-то конфигурации?

Я не хочу реализовывать сервер WebSocket, просто реализуйте потребителя. Метод StompSessionHandlerAdapter.affterConnect никогда не вызывается.

Это не приложение Android, это простое приложение Java.

@RequiredArgsConstructor
@Component
public class WebsocketConnect {

    private static final Logger log = LoggerFactory.getLogger(WebsocketConnect.class);

    private final MySessionHandler mySessionHandler;

    private WebSocketStompClient stompClient;

    @PostConstruct
    public void stompClient() throws Exception {
        WebSocketClient client = new StandardWebSocketClient();

        stompClient = new WebSocketStompClient(client);
        stompClient.setMessageConverter(new StringMessageConverter());

        String url = "ws://echo.websocket.org";
        ListenableFuture<StompSession> connection = stompClient.connect(url, mySessionHandler);

        log.info("connection started");  // This is logged.
        StompSession session = connection.get(10, TimeUnit.SECONDS); // Gives timeout
        log.info("connection passed"); // Never logged.

    }

}

@Component
public class MySessionHandler extends StompSessionHandlerAdapter {

    private static final Logger log = LoggerFactory.getLogger(MySessionHandler.class);

    @Override
    public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
        log.info("afterConnected -----------------"); // Never logged.
    }

    @Override
    public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) {
        log.error("handleException -----------------", exception);

    }

    @Override
    public void handleTransportError(StompSession session, Throwable exception) {
        log.error("handleTransportError  -----------------", exception);

    }

    @Override
    public void handleFrame(StompHeaders headers, Object payload) {
        log.info("handleFrame -----------------");
    }
}
...