Actualmente estoy trabajando en un proyecto de Ruby on Rails que muestra una lista de imágenes.
Una herramienta imprescindible para este proyecto es que muestra nuevas publicaciones en tiempo real sin la necesidad de actualizar la página web. Después de buscar por un tiempo, me topé con algunas soluciones y servicios de JavaScript como PubNub; sin embargo, ninguna de las soluciones proporcionadas tenía sentido en absoluto.
En la solución de JavaScript ( sondeo ) sucede lo siguiente:
- El usuario 1 ve la lista de fotos.
- En segundo plano, el código JavaScript está sondeando un punto final cada segundo para ver si hay una nueva publicación.
- El usuario 2 agrega una nueva foto.
- Hay un retraso de 50 ms antes de que se active el nuevo ciclo y obtenga los nuevos datos.
- El nuevo contenido se carga en el DOM .
Esto parece extraño cuando se traduce a un ejemplo del mundo real:
- El usuario 1 sostiene una pila de imágenes en su escritorio.
- Él / ella camina hacia el fotógrafo cada segundo y le pregunta si tiene uno nuevo.
- El fotógrafo hace una nueva foto.
- Este segundo cuando él / ella entra, ella puede tomar la foto y ponerla en la pila.
En mi opinión, la solución debería ser la siguiente:
- El usuario 1 sostiene una pila de imágenes en su escritorio.
- El fotógrafo toma una nueva foto.
- El fotógrafo camina hacia el montón y lo pone con el resto.
La solución PubNub es básicamente la misma, sin embargo, esta vez hay un pasante interno entre las partes para compartir los datos.
No hace falta decir que ambas soluciones consumen mucha energía, ya que se activan incluso cuando no hay datos para cargar.
Hasta donde yo sé, no hay una explicación (lógica) de por qué esta forma de implementación se utiliza en casi todas las aplicaciones en tiempo real.