Hola:
Estoy desarrollando una aplicación a la que se pueden conectar dos tipos de usuarios, profesores y alumnos. El profesor puede retransmitir una clase y pude ir haciendo unos test que los alunos irian viendo en su pantalla a medida que vayan viendo la clase.
Mi dudad es la siguiente: Yo tengo un div en el cargan los examenes y necesito que cada vez que el profesor crea una pregunta a los alunos se les actualize el listado de las mismas. Se me habia ocurrido hacerlo con ajax, desde la pantalla del alumno cada cierto tiempo, pero creo que puede ser un cuello de botella. ¿Hay alguna forma, en la que el servidor detecte que se ha reliazo un cambio en la base de datos y recargue este div o eso solo puedo hacerlo con AJAX?
Un saludo.
PD: La web esta hecha en symfony3
Respuestas
tienes que hacerlo con ajax porq el servidor no puede acceder a la pc del usuario, eso ya es parte de la sguridad en las redes, la peticion la tiene q empezar el usuario, peticion -><- respuesta, lo que si te provoca muchas peticiones. lo q puedes hacer es una tecnica de hacer una peticion ajax y dejarla pendiente haciendo q el server con el php la demore haciendo un loop hasta q se cumpla una condicion q seria q haya un cambio. Si da un timeout se hace otra peticion ajax y asi seguido. si t das cuenta se reduce considerablement el # de peticiones, el server es el q procesa. hay un bundle q hace esto no recuerdo el nombre creo q es algo de 'react' algo, y la verdad tengo q salir y no puedo buscar para ayudarte. suerte con eso ojala q alguien responda mas certero y amplio. a lo mejor javier se compadece y t escribe ;-)
@jdvellon
También puedes usar WebSockets. Por ejemplo, el proyecto socket.io, que funciona con node. Los cambios se propagan en tiempo real. Para Symfony tienes un bundle con Ratchet: GeniusesOfSymfony/WebSocketBundle
@SakyaStelios
Gracias a los dos. He estudiado la opción de los websockeds y creo que en mi caso seria muy complejo, por que tengo que actualizar ciertas partes de la plantilla y no la plantilla entera y tendría que seguir usando ajax.
Voy a echarle un vistazo a lo de "denore" y os cuento.
Saludos
@TsubasaAkai
La mejor opción para lo qie necesitas es usar socket.io junto con reactjs con esto puedes actualizar únicamente lo que necesitas y de una forma óptima
@eimepe