RSocket Java客户端访问Binance websocket API
我试图使用带Spring的RSocket连接到Binance websocket端点,但遇到以下异常
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();
}
}
我可以使用RSocket直接连接到WebSocket端点吗?还是必须创建一个RSocket服务器来处理WebSocket,然后从这个代理服务器连接到WebSocket
# 1 楼答案
WebSocket上的RSocket使用WebSocket作为运输工具来承载RSocket有效载荷。因此,您无法连接到原始WebSocket并期望任何东西都能正常工作
尝试针对以下端点测试上述程序:
wss://rsocket-demo.herokuapp.com/rsocket
见文件https://rsocket-demo.herokuapp.com/