Tengo un pequeño problema y debido a que mis habilidades de desarrollo WEB no son las más agudas, espero que me puedan ayudar.

El problema es que estoy trabajando en un tablero de tareas SCRUM digital y una de las funciones principales sería que los navegadores que tengan abierto el mismo tablero de tareas del proyecto tendrían que mostrar la misma imagen. De modo que si la persona A mueve una tarea, la persona B debería ver esto en su navegador sin tener que actualizar manualmente la página web.

Sé que hasta la sincronización de milisegundos es imposible porque eso simplemente mataría la conexión de red. Pero una vez cada 30 segundos sería bueno. Excepto si pudieras enviar los mensajes.

La representación de un movimiento de elemento no es la pregunta porque puedo hacer que parpadee con bastante facilidad. Necesito la ayuda en la comunicación del servidor del navegador . ¿Cómo sabe el navegador de la persona B que algo ha cambiado? ¿Es realmente tan simple como tener un temporizador y consultar idiotamente al servicio JSON por cualquier cambio? ¿O hay alguna forma de enviar los cambios al navegador?

4
Dejan 29 sep. 2009 a las 15:58

5 respuestas

La mejor respuesta

Desea examinar Comet.

En el desarrollo web, Comet es un neologismo para describir un modelo de aplicación web en el que una solicitud HTTP de larga data permite que un servidor web envíe datos a un navegador, sin que el navegador lo solicite explícitamente.

Esto te dará la respuesta casi instantánea que deseas. Hay varios marcos de trabajo de JavasScript con soporte incorporado para él; el que elija dependerá de lo que ya esté usando, su familiaridad con cada uno, etc. Dojo es uno que he usado antes, y funcionó muy bien.

11
RedFilter 29 sep. 2009 a las 12:17

Sí, esta es una práctica estándar de AJAX: la A es 'asíncrona', lo que significa que dispara una solicitud XMLHttpRequest en segundo plano para verificar el estado y luego actualizar la página si es necesario.

No puede "empujar" al navegador.

-1
JBRWilkinson 29 sep. 2009 a las 12:01

Suponiendo que esa persona A mover una tarea significa que el cambio se refleja en la base de datos, simplemente necesita establecer un intervalo de JavaScript (setInterval (function, timeInMs)) para sondear un script de back-end, usando AJAX, que devolverá el nuevo estado.

0
code_burgar 29 sep. 2009 a las 12:02

Es posible tener una conexión de extracción abierta que efectivamente le permita enviar contenido al navegador, pero la idea de la encuesta es la más simple.

Su encuesta solo necesita ver cuándo fue la última actualización, si es más reciente que la que conoce, puede descargar la actualización completa.

Mantenlo simple. No te equivocarás demasiado.

0
davewasthere 29 sep. 2009 a las 12:01

Hay tres técnicas para lograr esto:

  • sondeo breve: los navegadores envían solicitudes ajax cada x segundos e inmediatamente obtienen respuesta
  • sondeo largo: el navegador envía una solicitud ajax y espera la respuesta sin tiempo de espera, luego envía otra solicitud
  • socket flash: use la aplicación flash para persistente con la aplicación del lado del servidor
4
Anatoliy 29 sep. 2009 a las 12:03