1007 / не удалось разобрать ошибку json при использовании веб-сокетов с okhttp - PullRequest
0 голосов
/ 19 октября 2019

Мне нужно использовать веб-сокеты для подключения к серверу для Android-клиента. Для этого я использую библиотеку okHttp3.

 val request = Request.Builder()
        .url("ws://SERVER_URL")
        .build()
    val listener = EchoWebSocketListener()
    val ws = okClient.newWebSocket(request, listener)
    okClient.dispatcher.executorService.shutdown()

  private inner class EchoWebSocketListener : WebSocketListener() {
    override fun onOpen(webSocket: WebSocket, response: Response) {
        webSocket.send("Hello!")
        webSocket.send("What's up ?")
        webSocket.send("deadbeef".decodeHex())
        webSocket.close(1000, "Goodbye !")
        Log.e("MainActivity", "onOpen")
    }

    override fun onMessage(webSocket: WebSocket, text: String) {
        output("Receiving : $text")
    }

    override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
        output("Receiving bytes : " + bytes.hex())
    }

    override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
        webSocket.close(1000, null)
        output("Closing : $code / $reason")
    }

    override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
        output("Error : " + t.message)
    }
}

Функция onOpen успешно выполняется, но за ней следует метод onClose с ошибкой 1007 / failed to unmarshal json. Если я использую обычный URL-адрес веб-сокета, он работает нормально и переходит к функции onMessage. Может кто-нибудь помочь мне, как решить эту проблему?

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