java - RSocket Java Client 访问 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 端点,还是必须创建一个处理 websocket 的 RSocket 服务器,然后从这个代理服务器连接到 websocket?
解决方案
RSocket over WebSocket 使用 websocket 作为传输 RSocket 有效负载的传输。因此,您无法连接到原始 WebSocket 并期望任何东西都能正常工作。
尝试针对类似的端点测试上述程序
wss://rsocket-demo.herokuapp.com/rsocket
推荐阅读
- java - 无法在 Google Play 上上传应用,证书无效
- java - 解决 8puzzle 的 A* 实现 - java
- database - 使用动态列名填充访问表
- javascript - 折叠在模态中不起作用
- node.js - 在打包的 Electron 应用程序中运行 execFileSync 时出错
- vba - 如何在 Word 样式定义中包含 BackgroundPatternColor 或 HighlightColor?
- java - 规则执行中的 java.sql.time 比较流口水
- spring-boot - Axon 向其他微服务发送命令
- azure - Azure 和旧的 .Net 远程处理
- firebase - 查询模式丢失错误