Мне нужно использовать веб-сокеты для подключения к серверу для 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. Может кто-нибудь помочь мне, как решить эту проблему?