Android WebSocket received multiple response one by one with OkHttpClient

21 views Asked by At

I am using OkHttpClient to connect to the WebSocket. I expect the WebSocket response one by one, but now if I send one message it returns once (with multiple responses) only.
Here is what I am currently did:

  private val client = OkHttpClient()
  private lateinit var webSocket: WebSocket
  private var connected: Boolean = false

  fun connect() {
    if (connected) return
    val accessToken = tokenStorage.accessToken ?: return
    connected = true

    val request = Request.Builder()
      .url(BuildConfig.WS_URL)
      .addHeader("Authorization", "Bearer $accessToken")
      .build()

    client.newWebSocket(request, this)
  }

  fun sendMessage(message: String): Boolean {
    return webSocket.send(message)
  }

  override fun onOpen(webSocket: WebSocket, response: Response) {
    [email protected] = webSocket
  }

  override fun onMessage(webSocket: WebSocket, text: String) {
     // Action with message
  }

  override fun disconnect() {
    connected = false
    client.dispatcher.executorService.shutdown()
  }

Is it common or do we have a solution for this? If you know other libraries able to do it, please let me know. Thank you for your attention!

0

There are 0 answers