Вопрос

Я смотрю телешоу на Hulu.com (который, кстати, является лучшим сайтом потокового видео), и закрою ли я браузер, отключусь от Интернета и даже если я перезапущу компьютер во время просмотра шоу, в следующий раз, когда я зайду на их сайт, я смогу возобновить просмотр телевизора именно с того момента, на котором я остановил шоу.

Мой вопрос с точки зрения детального веб-программирования: как они могут этого достичь?Я предполагаю, что он не использует сеансы, потому что не думаю, что это сработает, если я перезагрузлю компьютер.Если он использует файлы cookie, то как они могут постоянно обновлять файлы cookie с указанием вашего местоположения в шоу?

Чтобы получить прилагаемое вознаграждение, пожалуйста, включите примеры кода на предпочтительно Java/JSP (PHP тоже подойдет), как создать файл cookie, и фрагмент серверного кода, который позволит обновить позицию зрителя.

Спасибо!

Это было полезно?

Решение

Один из простых способов заключается в том, что игрок может обновлять ваши файлы cookie через JavaScript, и эту функцию JavaScript можно вызывать каждый раз. н секунд с помощью Flash player:

<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>

В проигрывателе Flash ActionScript может часто вызывать JavaScript, чтобы получить достаточно точную информацию о том, где находился проигрыватель в последний раз, когда был установлен файл cookie.Каждый раз, когда он вызывается, он перезаписывает файл cookie обновленными данными:

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

Когда вы повторно посещаете страницу, первое, что делает сервер, — это проверяет, есть ли у вас файл cookie с именем «hulu{ID видео}», и если да, то значением этого файла cookie является позиция, установленная при последнем его просмотре.

Опять же (как говорилось в начале), это очень простой способ выполнить то, о чем вы просите.Я считаю, что лучший способ научиться — это использовать простую реализацию, а затем добавлять сложность, как только более простой случай станет хорошо понятен.Hulu, вероятно, делает периодические обновления «за кулисами», используя AJAX.(На самом деле, если вы просматриваете сетевой трафик во время просмотра видео, используя что-то вроде поджигатель, вы увидите случайные звонки на http://t2.hulu.com/v3/playback/position?...).

Другие советы

Flash имеет собственный механизм, похожий на файлы cookie: Локальный общий объект.

Есть некоторые примеры кода здесь.Я полагаю, что Hulu просто создает LSO и периодически обновляет его с учетом позиции в фильме.При следующей загрузке фильма он может получить LSO и восстановить позицию.Альтернативно, они могут хранить уникальный идентификатор и сохранять позиции на стороне сервера.

Они могут записать файл cookie с некоторым идентификатором записи, а затем сохранить на сервере, где вы были, когда сеанс завершился.Они могут узнать, где вы находитесь, заставляя клиента время от времени отправлять обратно подтверждение, в котором говорится: «Да, я играл до времени T».

Затем, когда вы вернетесь, они используют идентификатор записи в файле cookie для поиска в своей базе данных, где вы были.Неважно, как вы отключитесь, они все равно знают, что соединение пропало.

Я просто предполагаю, но они, вероятно, хранят позицию на сервере.Когда вы возобновляете просмотр чего-либо, он отправляет последнюю записанную позицию в качестве временной метки возобновления?

Страница, на которой вы находитесь, вероятно, время от времени отправляет пакеты состояния обратно на сервер, сообщая ему вашу текущую временную метку.При разрыве соединения используется последнее записанное значение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top