如何在Android上使用RxJava实现一个简单的基于WebSocket的协议

时间:2018-01-23 12:56:13

标签: android websocket rx-java reactive-programming rx-android

我正在编写一个简单的应用程序来开始使用RxJava,我没有弄清楚如何完成以下操作。

我有一个websocket连接,由WebSocket对象表示。我的想法是创建一个observable并在有人订阅observable时启动WebSocket连接。

我的自定义Observable将接收来自WebSocket的事件,如onOpen(),onMessage(),onClosing()和onFailure()。当它从WebSocket接收到这些呼叫时,它会通知用户。这听起来不错。只需调用onNext()并提供消息。

令我困惑的部分是:如果我的订阅者必须使用相同的WebSocket对象回复这些消息,该怎么办? 这就是我要做的事情:

  • 我创建了一个自定义Observable,而不是在订阅时打开WebSocket连接。
  • 在某些时候观察者订阅了观察者。
  • observable打开连接并开始将来自服务器的消息路由到观察者。
  • 观察者使用一些逻辑来确定要回复的内容。让我们说它将消息转发给某种状态机,最终返回我必须发送回服务器的回复。
  • 现在有人必须发回回复,也可能使用Reactive方法。

所以问题是,这个人是谁? 在Rx中实现这一目标的最佳方法是什么?我怀疑我应该将回复发布到另一个Observable,但是其他Observable根本无法访问WebSocket,因此它无法实际发送回复。

我是否负责从接收Observable到发送Observable的通信通道(WebSocket对象)?这对我来说听起来真的不对。

或者我应该将共享的WebSocket保存在两个Observable都可以访问的地方吗?

很抱歉,如果这个问题对某人来说听起来很愚蠢/琐碎,但这是我第一次使用RxJava并且我完全意识到问题在于我现在还没有"想到Reactive",还没有。

0 个答案:

没有答案