Я пытаюсь реализовать мгновенный чат с помощью socket.IO в android. Когда я впервые подключаюсь, он подключается без каких-либо ошибок, но когда я отключаю сеть и подключаюсь снова, я получил ошибку EngineIOException: ошибка опроса xhr
Вот мой код
fun connect(token: String) {
val userId = account.userId
if (socket != null && socket!!.connected()) {
Log.d(TAG, "Already connected...")
return
}
isConnecting = true
Log.d(TAG, "connecting...: " )
val options = IO.Options()
options.query = "userId=$userId"
options.reconnection = false
options.forceNew = true
// options.transports = arrayOf<String>(WebSocket.NAME); //or Polling.NAME
// options.upgrade =false
initEvents()
socket?.connect()
}
private fun initEvents(){
socket?.on(Socket.EVENT_CONNECT) {
Log.d(TAG, "socket.io connected")
App.get().runOnUiThread {
isConnecting = false
linkState.state = LinkState.ONLINE
/* JobSingleton.getInstance().jobManager.start()
socketObserver?.onOpen()*/
}
}
socket?.on(Socket.EVENT_ERROR) {
Log.e(TAG, "SOCKET ERROR : " + (it as Array)[0].toString())
}
socket?.on(Socket.EVENT_CONNECT_TIMEOUT) {
isConnecting = false
Log.e(TAG, "SOCKET CONNECTION TIMEOUT")
socketObserver?.onClose()
}
socket?.on(Socket.EVENT_DISCONNECT) {
Log.d(TAG, "SOCKET DISCONNECTED")
isConnected = false
socket?.disconnect()
socket?.off()
socket = null
socketObserver?.onClose()
App.get().runOnUiThread {
linkState.state = LinkState.OFFLINE
}
}
}
Вот логи
// первое подключение D / SocketManager: подключение ...: D / SocketManager: socket.io connected
// отключение Интернета E / SocketManager: ОШИБКА СОКЕТА: io.socket.engineio.client.EngineIOException: ошибка веб-сокета D / SocketManager: СОКЕТ ОТКЛЮЧЕН
// снова включить inte rnet D / SocketManager: подключение ...: D / SocketManager: socket.io подключен E / SocketManager: SOCKET ERROR: io.socket.engineio.client.EngineIOException: xhr poll error D / SocketManager: SOCKET DISCONNECTED D / SocketManager: connected ...: