Actualmente estoy trabajando en el proyecto Ruby on Rails que muestra una lista de imágenes.
Un elemento imprescindible para este proyecto es que muestra las nuevas publicaciones en tiempo real sin 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 provistas 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á encuestando 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 recupere 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 tiene una pila de fotos 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 tiene una pila de fotos en su escritorio.
- El fotógrafo toma una nueva foto.
- El fotógrafo camina hacia la pila y lo pone con el resto.
La solución de PubNub es básicamente la misma, sin embargo, esta vez hay un interno que camina 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.
Según mi conocimiento, 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.