Слушайте ответ сервера с помощью Scarlet - PullRequest
0 голосов
/ 21 мая 2019

, поэтому я недавно использовал алый WebSocket для успешной отправки данных на свой сервер онлайн, но проблема в том, что я должен получить ответ от сервера, но ничего не получаю. ниже мой код:

class MainActivity : AppCompatActivity() {

    @SuppressLint("CheckResult")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val socketInit = ServerClass(application)
        socketInit.socket.observeWebSocketEvent()
            .filter { it is WebSocket.Event.OnConnectionOpened<*> }
            .subscribe({
                val data =  "{ \"lat\": 40.5555555555, \"lng\": 37.55564555554545, \"userId\": 2}"
                val send = LocationAction(data =data)

                socketInit.socket.subscribe(send)
                Log.d("TAG_SUB",send.toString())


        },{
            Log.e("TAG", "Error while observing socket ${it.cause}")
        })


        socketInit.socket.observeTicker().subscribe({
            idText.text  =it
            Log.d("TAG", "Observed: $it")
        },
            {
                Log.e("TAG", "Error while observing ticker ${it.cause}")
            })


    }

}

вот мой интерфейс

interface SocketService {
    @Receive
    fun observeWebSocketEvent(): Flowable<WebSocket.Event>
    @Send
    fun subscribe(action: LocationAction)

    @Receive
    fun observeTicker(): Flowable<String>
}

этот класс ниже содержит мою алую реализацию и URL моего сокета

class ServerClass(application: Application): MainApplication() {

    private val lifecycle = AndroidLifecycle.ofApplicationForeground(application = application)
    private val backoffStrategy = ExponentialWithJitterBackoffStrategy(5000, 5000)

    private val okHttpClient = OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .readTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10, TimeUnit.SECONDS)
        .build()

    val socket = Scarlet.Builder()
        .webSocketFactory(okHttpClient.newWebSocketFactory("https://staging.kross.app/api/v1/notification/update"))
        .addMessageAdapterFactory(MoshiMessageAdapter.Factory())
        .addStreamAdapterFactory(RxJava2StreamAdapterFactory())
        .backoffStrategy(backoffStrategy)
        .lifecycle(lifecycle)
        .build()
        .create<SocketService>()


}

Функция наблюдателя должна быть там, где я ожидаю ответа от сервера, но ничего не происходит. Пожалуйста, мне нужна помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...