我可以通过以下方法进行请求和响应:
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
}
并过滤响应。感谢您的帮助。