如何同步发送请求并从websocket获取响应

时间:2019-04-19 01:49:34

标签: android kotlin websocket rx-java2

我可以通过以下方法进行请求和响应:

data class ApiRequest(
        @SerializedName("command") var command: String,
        @SerializedName("data") var data: String
    ) : Serializable
data class ApiResponse(
        @SerializedName("command") var command: String,
        @SerializedName("response") var response: String
    ) : Serializable

以及请求和响应的方法是:

websocket?.sendMessage(apiRequest)
            ?.subscribeOn(Schedulers.io())
            ?.observeOn(AndroidSchedulers.mainThread())
            ?.subscribe({ success ->
                Log.d(TAG, "Message sent")
            }, {t: Throwable? -> t?.printStackTrace() })
webSocket?.onTextMessage()
            ?.subscribeOn(Schedulers.io())
            ?.observeOn(AndroidSchedulers.mainThread())
            ?.subscribe({ socketMessageEvent ->
                PushData(socketMessageEvent.text)
            }, {t: Throwable? -> t?.printStackTrace() })

如何实现这样的方法:

fun getData(apiRequest: ApiRequest): Observable<ApiResponse>

不使用BroadcastReceivers,EventBus等? 我可以通过以下方式比较请求和响应:

if (apiRequest.command == apiResponse.command) {
    // do smth
}

并过滤响应。感谢您的帮助。

0 个答案:

没有答案