Duda: ¿Cómo podría hacer esto?

MrDrakos

Buenas, necesito realizar para una página web algún tipo de función que cambie automáticamente cada X horas y además, sea editable si fuera necesario. Como estoy seguro de que no queda claro, os pongo un ejemplo:

Antena 3 quiere mostrar que programa se está mostrando en directo ahora mismo, así que se puede ver una foto sobre el reproductor que indica cual es. A las 13:00 comienza el siguiente programa, y, en ese momento, la foto del reproductor cambia a la imagen del programa siguiente.

Y se da el caso de que otro día a esa misma hora, hay un atentado y hay que poner las noticias a esa hora, así que a las 13:00 indicamos que en vez de mostrar la usual, se muestre el logo de las noticias.

Espero que se entendiera, solo busco saber como puedo realizar esta función.

alexsanro

#1 Con JQuery puedes refrescar el div que desees en un intervalo de tiempo con el contenido que desees, si bien pongamos la programación esta guardada en una base de datos, entonces sería ya llamar con ajax.

1 respuesta
RaymaN

Almacena los eventos que deben aparecer cada hora en una base de datos, con una tabla para los eventos y otra para sucesos especiales que aparecen por encima de los eventos. Si quieres mostrar el cambio en directo, puedes hacerlo con setInterval o setTimeout en JavaScript.

B1x1t0

#2 jQuery refrescandose cada minuto. Yo lo veo. Lo mas eficiente del mundo. Asi seguro que la pagina va fluidita fluidita.

1 respuesta
alexsanro

#4 Quizás no sea lo mas eficiente pero para el ejemplo es lo mejor se me ocurre teniendo en cuenta el ejemplo que pone son de horas. ¿Se te ocurre una manera mejor? Curiosidad, así aprendo mas.

1 respuesta
Merkury

#5 Basicamente almacenar lo que quieras mostrar con un tres campos de fecha inicio, fin y urgente (o como quieras llamarlo) y fiesta. Si hay algun evento urgente se mete en la bd y la funcion de fetch que le de prioridad y pista.

Para que se actualice por ejemplo si el usuario tiene la pagina abierta durante horas, simeplemente meter una funcion para comprobar el estado de la session del usuario y si es > X meterle un force refresh y pista.

1
S

Lo que propones a simple vista no parece algo trivial, pero parece que necesitas algo basado en pub/sub. Por ejemplo faye:
https://github.com/faye/faye

MrDrakos

Entonces una base de datos con Jquery es lo que mejor veis?

Alguna otra alternativa para comparar opciones?

eXtreM3

Si necesitas que sea editable no te queda más opción que llamar al servicio que te proporcione los cambios mediante ajax. Esos datos los tratas y refrescas tu div.

No veo qué tiene de malo.

1 respuesta
Maldercito

Socket.io

1 respuesta
Merkury

#9 Pero ajax por que? Dudo que sea una pagina live o que la gente este ahi conectada horas, con lo que hacer un refresco periodico con ajax lo veo una perdida de tiempo y de recursos, porque si tienes que estar "escuchando" los cambios en la DB GG.

#9 Que no digo que este mal, pero me parece complicarse demasiado la vida.

1 respuesta
eXtreM3

#11 si no he entendido mal, lo que quiere es poder cambiar al vuelo la emisión de X canales. En algún momento (sin refrescar) tendrás que saber qué canal es el activo.

Cómo se hace sin ajax? :\

Es como en mediavida, cada 30 segundos llaman a moar.php para consultar si hay posts nuevos en un hilo. Aquí igual, cada 30 segs (por decir algo) pregunto cuál es el canal activo, si es distinto al que estoy viendo actualmente -> refresco de div y andando.

Ahora, que me digas que la página tiene 10 millones de usuarios simultáneos y meter 10 millones de peticiones cada 30 segundos es un gasto de recursos, eso ya no lo discuto. ¿Cómo se haría en ese caso?

1 respuesta
Merkury

#12 Siempre puedes forzar el refresco en el cambio de emisión.

Para los 10 millones yo tiraria de sockets, lo tengo claro.

2 respuestas
eXtreM3

#13 Siempre puedes forzar el refresco en el cambio de emisión. Cómo?

1 respuesta
Ivan69

#13 la de antena3 por curiosidad es con ajax refrescando cada hora y sacandolo de database a otra pagina que luego incluye en esta. En el fondo poca gente estara en el momento del refresh aunque sean 10 millones, y sacandolo de la pseudo pagina lo mismo son pocas consultas a la db pero bastante movimiento de server (no se como ira internamente). ninjaedit

Merkury

#14 Perdona, he leído una cosa y he entendido y respondido otra, para esto efectivamente ajax cada X minutos.

Pero estaba pensando en una imagen por ejemplo en la pagina principal, no en el streaming.

1 respuesta
eXtreM3

#16 menos mal, me estabas dejando chalao Freddy! :)

1 respuesta
Merkury

#17 Llevo un día muy largo! Mis disculpas.

1
Camperito

#10 Win win win y cierra hilo

S

Para usar ajax, tendrías que usar long-polling.

Usuarios habituales