push-notification - notificaciones - push notifications javascript
¿Por qué y cómo es eficiente la batería de notificaciones push(como GCM)? (1)
Una de las razones principales por las que es eficiente es que se escala bien. El dispositivo Android mantiene una única conexión abierta a los servidores de GCM para escuchar las notificaciones de TODAS las aplicaciones en el dispositivo, y luego enruta los mensajes a las aplicaciones apropiadas para las que están destinados. Esto es mucho más escalable y eficiente que mantener una conexión de red abierta para cada aplicación que desee tener algún tipo de notificaciones push.
La conexión en sí misma es una conexión TCP que se deja abierta, incluso cuando el teléfono está inactivo. Puede reactivar el dispositivo cuando se reciben datos. Me imagino que hay algún tipo de ping de corazón que también puede restablecer la conexión si es necesario.
El zócalo es probablemente algo que podría hacer usted mismo, sin embargo, como dije antes, la razón principal de la eficiencia es la conexión única para todas las aplicaciones. Muy escalable
¿Quería entender los motivos fundamentales de la notificación push como Google Cloud Messaging (anteriormente llamada Google Cloud to Device Messaging) para que sea más amigable con la batería, para la comunicación del dispositivo en la nube <->?
En mi opinión, las tecnologías alternativas implican "sondeo" (sobre TCP / IP) mientras se mantiene la conexión en estado CONECTADO, utilizando keep-alives. O hay algo mejor ?
Mi compromiso limitado con GCM es que también usa TCP / IP y keepalives, pero el cliente nunca consulta el estado del servidor. En cambio, el servidor informa al cliente sobre un mensaje entrante y las aplicaciones que se suscriben a cierto tipo de mensajes son notificadas de forma asincrónica. Además, la conexión GCM común se comparte entre varias aplicaciones, lo que permite que los dispositivos electrónicos duerman / hibernen en momentos "coordinados", sin múltiples aplicaciones que mantengan los componentes electrónicos más "ENCENDIDOS" (eléctricamente activos) de lo que deben ser. ¿Es este el entendimiento correcto? ¿O hay más?
Finalmente, ¿cómo se compara esto exactamente con MQTT sobre TCP / IP con keepalives? ¿Cuáles son las razones por las cuales MQTT es (aparentemente) menos eficiente en cuanto a la batería que el GCM?