java - socket io examples
Continuamente ejecutando el servicio Socket.io en Android (2)
Estoy desarrollando un cliente de chat usando Socket.io como medio de comunicación con el servidor. Como tal, usar GCM no es exactamente una opción.
Deseo poder chatear en cualquier momento (incluso si la aplicación está cerrada); esencialmente, el zócalo debe estar escuchando en todo momento. Entiendo que un servicio se puede iniciar cuando el teléfono arranca y sigue funcionando. Sin embargo, esto parece ser una idea bastante mala en un dispositivo móvil, el drenaje de la batería y similares.
Investigando, parece que GCM es la implementación más común para este tipo de problema. Lamentablemente, no puedo reemplazar Socket.io en este momento. Me preguntaba cómo iba a implementar este diseño de chat, con un socket escuchando en segundo plano.
GCM es la forma correcta de manejar esto. Envíe la alerta de GCM al dispositivo y luego el usuario puede hacer clic para abrir su aplicación. En ese momento puede volver a abrir su socket y obtener los datos necesarios.
Si alguna vez planea implementar su aplicación en iOS, esta es la ruta que tomará allí. iOS mata las tareas de fondo después de 5 minutos o menos si así lo desea.
Debe ejecutar un servicio (por ejemplo, ListenerService) cuando se inicia su aplicación y dentro de ese servicio debe iniciar un hilo (por ejemplo, ListenerThread). Y mantenga ese thread y service alives hasta que su aplicación esté en onResume () / onPause (). A través de ese hilo, conecte el socket de su cliente al servidor. y reciba todas las actualizaciones en ListenerThread. y si desea enviar algunos paquetes al servidor, envíe otro hilo / controlador (por ejemplo, tempThread) y cierre ese thrad después de enviar la solicitud.
Cuando su aplicación se cierre / cierre, interrumpa ese servicio (por ejemplo, ListenerService). Y en ese servicio debe dormir ListenerThread. No intente detener el hilo para obtener más información sobre el hilo. Puede seguir este enlace y este enlace. Thread.stop () está en desuso en Android desde el nivel 1 de la API, consulte el documento . Inicie el servicio (ListenerService) con START_STICKY. como referencia, consulte la documentación del servicio de Android