Как отправить запрос и получить ответ от websocket синхронно - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть следующие методы для запроса и ответа:

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
}

и фильтрация ответов. Спасибо за вашу помощь.

...