tutorial example android ios http websocket push-notification

android - example - pusher tutorial



WebSockets Consumo de energĂ­a (1)

La solución Pure WebSockets / sockets TCP (sin paquetes de ping-pong) en estado inactivo ni siquiera detecta una pérdida de conexión porque no envía ningún dato. Una vez que se produce el protocolo de enlace, se supone que la conexión se establece hasta que algo cierra el socket o el remitente intentará enviar algunos datos y se detecta que ya no hay conexión (en este caso, el socket a veces se cierra automáticamente, pero no contaría en eso).

Por lo tanto, cuando la conexión está inactiva, el WiFi podría pasar al estado de reposo sin preocuparse y, por lo tanto, minimizar el consumo de energía. Pero hay algunos inconvenientes: no detecta la pérdida de conexión, por lo que tiene que implementar una solución de ping-pong con el intento de reconectarse si falla el ping. El bucle de ping tendrá un impacto en el uso de la CPU y el consumo de energía, pero será mucho más bajo que el WiFi, que está constantemente en estado "On". Por supuesto, perderá la capacidad de recibir datos cuando esté en modo de suspensión.

Fuente: Experiencia propia de Android y WebSockets.

En un dispositivo móvil (iPhone / Android), ¿cuál es el impacto en el consumo de batería al implementar WebSockets vs HTTP?

Supongamos que estoy creando una aplicación de mensajería instantánea y tengo dos opciones:

  1. Confíe en las notificaciones automáticas para notificar al dispositivo un nuevo mensaje y luego recupere ese mensaje a través de una API REST.
  2. Establezca una conexión WebSocket cuando el usuario inicie la aplicación y mantenga esa conexión mientras la aplicación esté activa. El servidor reenvía todos los mensajes directamente al dispositivo, en lugar de utilizar Notificaciones Push.

Alguien me dijo que mantener una conexión WebSocket persistente sería un gran problema de batería porque requiere que la antena esté constantemente activa, en lugar de apagarse después de cada solicitud, pero ¿es eso realmente cierto?

This respuesta sugiere que en iOS, cada dispositivo mantiene una conexión persistente con el servicio de notificaciones push en todo momento (similar a WebSockets, supongo), así que, ¿no sugiere eso que la antena del dispositivo funciona 24/7?

La sobrecarga adicional de las solicitudes HTTP sería bastante insignificante para una aplicación de mensajería instantánea, pero en una aplicación donde se necesita descargar una gran cantidad de elementos constantemente, una conexión WebSocket persistente sería muy útil. ¡Cualquier información sobre el mantenimiento de conexiones WebSocket a largo plazo en dispositivos móviles (especialmente en relación con el consumo de batería) sería extremadamente útil!