Android Nkzawa SocketIO desconectar y hacer una nueva conexión

Estoy trabajando con android, socketio (nkzawa). Cuando me conecto la primera vez funciona perfectamente. Pero entonces si me desconecto e intento hacer "otra conexión" el EVENT_CONNECT nunca se llama.

Aquí pongo algunos fragmentos

Cuando me conecto

Dentro de BeforeActivity

@Override public void onResume() { super.onResume(); socketManager = (socketManager) socketManager.Instance(this, UrlHelper.URL.replaceAll("\\{userId\\}", userId.toString()); } 

Entonces tengo clase SocketManager que se extiende desde GenericSocket donde tengo una variable (SocketManager) instancia de un singleton

 public static SocketManager Instance(SocketListener listener, String url) { if (instance == null) { instance = new socketManager(url); instance.init(); } socketManager.listener = (listener)listener; return instance; } 

Y la inicialización del socket se realiza en la clase GenericSocket donde tengo una variable de tipo (com.github.nkzawa.socketio.client.Socket) tcalled socket

 protected void init() { try { socket = IO.socket(url); socket .on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) { onConnect(); JSONObject connectionMessage = getConnectionMessage(); socket.emit(MESSAGE_JOIN, connectionMessage); } }).on(MESSAGE, new Emitter.Listener() { @Override public void call(Object... args) { Object data = args[0]; if (data instanceof JSONObject) { JSONObject json = (JSONObject) data; try { onMessage(json.get("content").toString()); } catch (Exception ex) { Log.e(TAG, ex.getMessage()); } } else { onMessage(data.toString()); } } }).on(Constant.CONNECTION, new Emitter.Listener() { @Override public void call(Object... args) { Object data = args[0]; if (data instanceof JSONObject) { JSONObject json = (JSONObject) data; try { onMessage(json.get("content").toString()); } catch(Exception ex) { Log.e(TAG, ex.getMessage()); } } else { onMessage(data.toString()); } } }).on(com.github.nkzawa.socketio.client.Socket.EVENT_DISCONNECT, new Emitter.Listener() { @Override public void call(Object... args) { onDisconnect(); } }); socket.connect(); }catch (Exception e){ Log.i("Socket connection error: ", e.getMessage()); } //end socket connection } 

Y cuando desconecto

La desconexión es como esto dentro de la clase SocketManager que tengo este método

 public void disconnect() { this.socket.disconnect(); this.socket=null; SocketManager.instance = null; } 

Gracias

Tu código parece estar bien. Intente poner this.socket.off () antes de socket.disconnect (). Tenía un problema donde el servidor estaba manteniendo mi conexión viva incluso después de la desconexión (), socket.off () trabajó para mí.

  • Conexión a un espacio de nombres socket.io mediante la biblioteca socket.io-client.java
  • AndroidAsync Socket.io ArrayIndexOutOfBoundsException
  • ¿Cómo enviar datos binarios con socket.io?
  • ¿Es posible usar WebSockets o similar con una aplicación nativa de Android?
  • Gestionar devoluciones de llamada en el cliente android de Socket.io v1.4
  • Mostrar java.util.logging.Logger registra en Android Studio logcat
  • Socket.io - ReferenceError: io no está definido
  • Mejores prácticas de Android Socket.IO para mantener la conexión activa
  • Conectar cliente android a sails.js
  • NodeJS + SocketIO empuja a la aplicación para móviles
  • ¿Cómo puedo enviar params a Controller usando socket en Sails JS de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.