android - 连接丢失后RSocket恢复会话/流
问题描述
我正在使用 RSocket 通道并尝试实现恢复功能,以防与服务器的连接丢失。在尝试了 resume()、resumeSessionDuration()、resumeStreamTimeout() 和 resumeCleanupOnKeepAlive() 的不同组合之后/documentation:https://javadoc.io/static/io.rsocket/rsocket-core/1.0.0-RC3/io/rsocket /RSocketFactory.ServerRSocketFactory.html#resume--/在服务器和移动设备上,仍然没有任何反应。在移动设备上,我每 10 秒向服务器发送一次数据,当连接丢失时,套接字在第 3 次重试时被处理。有谁知道所有这些方法究竟在服务器端和客户端做什么?几乎没有任何文档...
这是服务器上的代码:
RSocketFactory.receive()
.resume()
.acceptor((setupPayload, reactiveSocket) -> Mono.just(responseHandler))
.transport(TcpServerTransport.create(buildSecuredTcpServer(address, port,
sslContext)))
.start()
.block();
这是移动设备上的代码:
socket = RSocketFactory.connect()
.errorConsumer(throwable -> {
if (throwable instanceof RejectedResumeException){
Log.d("tagg", "error: " + throwable.getMessage());
}
})
.resume()
.resumeStreamTimeout(Duration.ofSeconds(120))
.resumeSessionDuration(Duration.ofSeconds(600))
.keepAlive(Duration.ofSeconds(120), Duration.ofSeconds(120), 120)
.resumeStrategy(() -> new PeriodicResumeStrategy(Duration.ofSeconds(1)))
.metadataMimeType(BuildConfig.RSOCKET_METADATA_MIME_TYPE)
.dataMimeType(BuildConfig.RSOCKET_DATA_MIME_TYPE)
.transport(TcpClientTransport.create(tcpClient))
.start()
.block();
Objects.requireNonNull(socket)
.requestChannel(Flux.from(this::onSubscribe))
.doOnNext(this::receiveData)
.retryBackoff(Integer.MAX_VALUE, Duration.ofSeconds(1))
.subscribe();
解决方案
推荐阅读
- angular - 获取 HttpHeader 在不同角度组件中解析的对象
- python - 合并后无法重命名python pandas数据框中的列(内连接)
- python - 创建一个模型来分类一个句子是否合乎逻辑
- react-native - Vue Native - 使用 axios 从 api 获取数据未显示在页面上
- android - 如果 chart.setVisibleXRangeMaximum 大于特定值,则条目的可绘制图标将消失
- assembly - 如何在程序集中打印 ASCII 数组?
- java - 有时无法使用 AWS SDK for Java v2.0 获取 s3 对象
- php - 从表单输入多行时缺少或未对齐的值 - PHP/MYSQLI
- c# - 如何从文件中删除行?
- java - 语音到文本应用程序用新文本替换旧文本