Имею подключение по websocket
object StompWrapper {
private var emitter: ObservableEmitter<Event>? = null
init {
val client = OkHttpClient.Builder().build()
val stomp = StompClient(client)
stomp.connect()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
when (it.type) {
Event.Type.OPENED -> {
Timber.d("Connect OPENED")
isConnected = true
emitter?.onNext(Event(Event.Type.OPENED))
}
Event.Type.CLOSED,
Event.Type.ERROR -> {
Timber.d("Connect ERROR")
isConnected = false
emitter?.onNext(Event(Event.Type.ERROR))
}
else -> {}
}
}, { e ->
Timber.e(e)
})
}
fun status(): Observable<Event> {
return Observable.create {
Timber.d("Connect CREATE status $isConnected")
emitter = it
if (isConnected) {
emitter?.onNext(Event(Event.Type.OPENED))
}
}
}
}
Вызываю так
disposable.add(StompWrapper.status().subscribe {
Timber.d("Connect: %s", it.type)
})
Получается что соединение висит в статическом классе. Это работает если будет один подписчик, если пару раз подписаться то будет срабатывать последняя подписка. Подскажите пожалуйста, как сделать чтобы я в любом месте приложения мог узнать текущий статус соединения с сервером и делать это сколько угодно раз?