refCount 即使发生错误也能保持连接
Posted
技术标签:
【中文标题】refCount 即使发生错误也能保持连接【英文标题】:refCount keeping connection even after an error 【发布时间】:2021-08-07 21:19:44 【问题描述】:我正在使用 refCount 将 BLE 连接保持 5 分钟。这在我遇到连接问题之前效果很好,refCount 仍然保持连接并重播重播错误。
有没有一种方法可以让 refCount 在出现错误时立即断开连接,或者让重放而不是重放错误?
bleDevice
.establishConnection(false)
.replay(1)
.refCount(1, 5, TimeUnit.MINUTES)
【问题讨论】:
如果没有订阅者强制存在,.refCount()
是否会在超时之后断开连接?
你有哪个 RxJava 版本? 3.x 应该可以正常工作。
不幸的是,RxandroidBle 仍然是基于 2.x 的。计划对此进行更改。
@DariuszSeweryn BT 连接创建速度很慢(用户需要在 BT 设备上确认连接),因此对于这个特定设备,我们希望保持连接。
【参考方案1】:
实现您想要的简单方法是使用 RxJava 3 refCount
运算符。您可以使用 RxJava 2 3 互操作性库 RxJavaBridge。
val connectionObservable = bleDevice
.establishConnection(false)
.`as`(RxJavaBridge.toV3Observable())
.replay(1)
.refCount(1, 5, TimeUnit.MINUTES)
.to(RxJavaBridge.toV2Observable()) // optional if you want to stick to RxJava 3
【讨论】:
以上是关于refCount 即使发生错误也能保持连接的主要内容,如果未能解决你的问题,请参考以下文章