¿Cómo puede Hulu.com un seguimiento de su posición en un programa de televisión?
-
22-08-2019 - |
Pregunta
Estoy viendo un programa de televisión en Hulu.com (lo cual es cierto, absolutamente el mejor sitio de streaming de vídeo alrededor) y si cerrar el navegador, desconectarse de Internet, e incluso si lo reiniciar mi equipo en el medio de ver un espectáculo, la próxima vez que vaya a su sitio, para que pueda reanudar la televisión exactamente desde el momento en que lo había dejado en el espectáculo.
Mi pregunta es, desde una perspectiva detallada de programación web, ¿cómo pueden lograr esto? Asumo que no está usando sesiones porque no creo que eso funcionaría si me reinicia el ordenador. Si se trata de utilizar las cookies, entonces ¿cómo pueden actualizar constantemente la cookie con su ubicación en un espectáculo?
Con el fin de recibir la recompensa adjunto, por favor incluya ejemplos de código de preferencia de Java / JSP (PHP está bien también) de cómo crear la cookie y un fragmento de código del lado del servidor que permita la posición del espectador actualizada.
Gracias!
Solución
Una forma simple es que el jugador puede actualizar su cookie (s) a través de JavaScript, y que la función JavaScript puede ser llamado cada n segundos por el jugador de inflamación:
<script type="text/javascript">
function UpdateViewData(videoId, time)
{
//for a video with id 12345, sets a cookie called:
//hulu12345 with a value of the position
var cookieData = 'hulu' + videoId + '=' + time + '; expires=' + getDate() + ';path=/';
document.cookie = cookieData;
}
</script>
En el reproductor de Flash, ActionScript puede invocar el JavaScript frecuencia para obtener una actualización bastante exacta de donde estaba la última vez que se establece la cookie al jugador. Cada vez que se llama, sobrescribe la cookie con los datos de actualización:
import flash.external.ExternalInterface;
//in flash video player code,
//have variables for video ID and current player position
//every 5 seconds, call:
ExternalInterface.call("UpdateViewData", videoId, currentPlayerPosition);
//this will invoke a JS function on the host page named "UpdateViewData"
//and pass in the provided arguments
Cuando se vuelve a visitar la página, lo primero que el servidor hace es comprobar para ver si tiene una cookie denominada "Hulu {ID de vídeo}" y si es así, el valor de esa cookie es la posición establecida última vez que estuvo verlo.
Una vez más (como se indica en el principio) se trata de una forma muy sencilla de lograr lo que preguntas. Creo que la mejor manera de aprender es ir con una implementación simple y luego añadir complejidad vez el caso más simple se entiende bien. Hulu probable que hace que las actualizaciones periódicas detrás de las escenas usando AJAX. (De hecho, si se observa el tráfico en la red mientras ve un vídeo usando algo como Firebug , verá llamadas ocasionales a http://t2.hulu.com/v3/playback/position?...
).
Otros consejos
Flash tiene su propio mecanismo de la cookie como:. Local Shared Object
Hay algunos ejemplos de código rel="noreferrer"> . Imagino Hulu sólo crea una LSO y actualizaciones periódicamente con la posición en la película. Cuando la película se ha cargado al lado, se puede conseguir la LSO y restaurar la posición. Alternativamente, podrían almacenar un identificador único y guardar las posiciones del lado del servidor.
Se puede escribir una galleta con un poco de ID de registro, a continuación, tienda donde se encontraba cuando la sesión se fue en el servidor. Ellos pueden saber dónde se encuentra haciendo que el cliente envíe de vuelta un acuse de recibo de vez en cuando que dice: "Sí, he jugado a tiempo t."
A continuación, cuando vuelva utilizan el ID de registro en la cookie para buscar en su base de datos donde estabas. No importa cómo se desconecta, todavía saben la conexión fue.
Sólo estoy adivinando, pero es probable que guardar la posición en el extremo del servidor. Cuando vaya a reanudar viendo algo, envía la última posición registrada como una hoja de vida-de marca de tiempo?
La página que estás en, probablemente, de vez en cuando envía paquetes de estado de vuelta al servidor, diciendo que su fecha y hora actual. Cuando se corta la conexión, se utiliza el último valor registrado.