有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    WebSocket上的RSocket使用WebSocket作为运输工具来承载RSocket有效载荷。因此,您无法连接到原始WebSocket并期望任何东西都能正常工作

    尝试针对以下端点测试上述程序:

    wss://rsocket-demo.herokuapp.com/rsocket

    见文件https://rsocket-demo.herokuapp.com/