Hay varias formas de enviar datos en tiempo real a una aplicación móvil:
- Notificaciones push
- WebSockets
- Transmisión HTTP, sondeo largo o sondeo simple (con los dos últimos no estrictamente push)
- Conexión directa TCP / IP
- WebRTC para mensajería entre pares
La mejor manera dependerá de dos cosas:
- La funcionalidad que está intentando construir dentro de su aplicación
- Los datos que está entregando y sus requisitos.
Notificaciones push
- Si un ingeniero de software con más de 10 años de experiencia pasara por el proceso de entrevista de hoy, ¿sería capaz de pasar la entrevista?
- ¿Cómo freelancer.com construyó su sistema de gamificación?
- ¿Cuáles son algunas compensaciones comunes en el desarrollo de software?
- ¿Cuál es, según usted, la mejor manera de pasar de la ingeniería de software a la gestión de productos?
- ¿Cómo es trabajar con un gerente / líder de equipo indio en una empresa de tecnología en Estados Unidos?
Para datos ocasionales simples, las notificaciones push serán suficientes. Sin embargo, creo que hay algunas restricciones sobre los datos que se entregan a la aplicación móvil. En cambio, la aplicación se da cuenta de la notificación y tiene que obtener los datos de la fuente original de la que proviene.
WebSocket
WebSocket ofrece una forma de lograr una única conexión bidireccional persistente entre un cliente (aplicación móvil) y un servidor. Es probable que entregue los datos mucho más rápido que las notificaciones push.
Una conexión persistente lo hace muy adecuado para las actualizaciones frecuentes de datos que se entregan directamente a la aplicación.
Dado que se trata de una única conexión persistente, es probable que sea eficiente en términos de uso de recursos, lo que es claramente importante para los dispositivos móviles donde el uso de datos de red y batería son recursos valiosos.
Streaming HTTP
Una conexión persistente de servidor a cliente único. Es probable que entregue los datos mucho más rápido que las notificaciones push.
Adecuado para aplicaciones donde los datos se actualizan frecuentemente.
Dado que la conexión solo permite la comunicación de servidor a cliente, se requieren conexiones adicionales para la funcionalidad de cliente a servidor. Entonces, dependiendo del escenario de comunicación, puede no ser tan eficiente como WebSocket.
HTTP Long-Polling y sondeo estándar
Se realizan solicitudes al servidor a intervalos para obtener nuevos datos. Entonces, no estrictamente empujar.
Adecuado en los siguientes escenarios:
- Cuando las actualizaciones no necesitan ser instantáneas
- Cuando la infraestructura de red (firewalls y servidores proxy) interfiere con otros tipos de conectividad
Conexión TCP directa
Quería enumerar esto para completar. Claramente de muy bajo nivel.
Siempre he usado un protocolo de nivel superior, pero puede haber escenarios para los que es ideal.
Feliz de aceptar contribuciones adicionales para responder mejor a esta parte.
WebRTC
Conexiones persistentes entre uno o más pares.
Si los datos provienen de otros pares, WebRTC puede ser una opción. Es adecuado para datos, audio y video.
¿Dónde encontrar más?
Si está buscando actualizaciones frecuentes de datos, he compilado una Guía de tecnologías web en tiempo real que puede ser de su interés.
Además, anteriormente no he mencionado el transporte de telemetría MQ (MQTT) que se ha creado para una comunicación ligera dirigida a Internet de las cosas (IoT). Sin embargo, puede haber algunos casos de uso en los que es muy bueno para dispositivos móviles en los que la conectividad será a través de WebSocket o un respaldo HTTP.