#java #websocket #rsocket
#java #websocket #rsocket
Вопрос:
Я пытаюсь подключиться к конечной точке Binance websocket с помощью RSocket с помощью Spring, но я получаю следующее исключение.
java.lang.AssertionError: expectation "consumeNextWith" failed (expected: onNext(); actual: onError(java.nio.channels.ClosedChannelException))
Вот мой тестовый код:
@SpringBootTest
@Slf4j
class RSocketClientIntegrationTest {
private static RSocketRequester requester;
@BeforeAll
public static void setupOnce(@Autowired RSocketRequester.Builder builder) {
// given
requester = builder
.connectWebSocket(URI.create("wss://stream.binance.com:9443/ws"))
.block();
}
@Test
void shouldRetrieveStockPricesFromTheService() {
//when
final Flux<String> aggregatedTradeStream = requester
.route("/bnbbtc@aggTrade")
.retrieveFlux(String.class)
.take(1)
.doOnError(e -> log.error(e.toString()));
// then
StepVerifier.create(aggregatedTradeStream)
.consumeNextWith(response -> {
assertThat(response).isNotNull();
})
.verifyComplete();
}
}
Могу ли я подключиться непосредственно к конечной точке WebSocket с помощью RSocket или мне нужно создать сервер RSocket, который обрабатывает websocket, а затем с этого прокси-сервера подключиться к websocket?
Ответ №1:
RSocket через WebSocket использует websocket в качестве транспорта для передачи полезных данных RSocket. Таким образом, вы не можете подключиться к необработанному WebSocket и ожидать, что что-либо сработает.
Попробуйте протестировать вышеуказанную программу на конечной точке, такой как
wss://rsocket-demo.herokuapp.com/rsocket
Смотрите документы на https://rsocket-demo.herokuapp.com /
Комментарии:
1. Спасибо за ваш ответ. Вы правы. Binance Websocket не является конечной точкой RSocket, поэтому я не могу использовать соединение RSocket.