Я просто хочу подключиться к серверу 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 -----------------");
}
}