Для отправки или получения сообщений сначала необходимо подключиться к каналу.Вот почему client.execute
возвращает Mono<Void>
, что означает, что он не возвращает никаких данных, он просто сигнализирует о завершении или сбое хэндскахе.Если он вернется, например.Flux<WebSocketMessage>
, как бы вы узнали, успешно ли завершился рукопожатие?
Если вы хотите получить доступ к каналу вне лямбды, вы не можете сделать это, реализовав метод обработчика:
Consumer<WebSocketMessage> printingConsumer = webSocketMessage -> System.out.println(webSocketMessage.getPayloadAsText());
client.execute(URI.create(URL), session -> handle(session, printingConsumer));
}
public Mono<Void> handle(WebSocketSession session, Consumer<WebSocketMessage> consumer) {
return session.receive()
.doOnNext(consumer::accept)
.then();
}