どのようにHulu.comは、テレビ番組で自分の位置を追跡することができますか?

StackOverflow https://stackoverflow.com/questions/684756

質問

私は(ところであり、周りの絶対的な最高のストリーミングビデオサイト)Hulu.com上のテレビ番組を見ていると私は私のブラウザ、インターネットから切断を閉じて、私は途中でコンピュータを再起動してもか番組を見て、私は自分のサイトに行く次回は、私がショーでオフに左まさに時からテレビを再開することができます。

私の質問は、それらがどのようにこれを達成することができ、詳細なウェブプログラミングの観点からですか?私は自分のコンピュータを再起動した場合にそれがうまくいくとは思わないので、私はそれがセッションを使用していないと仮定します。それはクッキーを使用していた場合、どのように彼らは常にショーにあなたの場所でクッキーを更新することができますか?

付属の恵みを受けるためには、更新された視聴者の位置を可能にするクッキーとサーバー側のコードのスニペットを作成する方法の(PHPがあまりにもOKです)、好ましくは、ジャワ/ JSPのコード例を含めてください。

ありがとう!

役に立ちましたか?

解決

1つの簡単な方法は、プレイヤーはJavaScriptを経由して、あなたのクッキー(複数可)を更新することができるということです、そしてJavaScript関数を呼び出すことができることをすべてののフラッシュプレーヤーによって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>

のFlashプレーヤーでは、ActionScriptはプレイヤーはクッキーが設定された最後の時間だった場所のかなり正確なアップデートを入手するために頻繁にJavaScriptを呼び出すことができます。それが呼ばれるたびに、それが更新されたデータとクッキーが上書きされます:

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
あなたがページを再訪すると

、サーバーが最初に行うことは、あなたが「Huluの{動画のID}」と呼ばれるクッキーを持っているし、もしそうなら、そのCookieの値は、あなたがいた最後の時間を設定した位置であるかどうかをチェックしていますそれを見ています。

アゲイン(冒頭で述べたように)、これはあなたが求めているものを達成するために非常に単純な方法です。私は学ぶための最善の方法は、単純な実装で移動して単純なケースはよく理解されると複雑さを追加することです見つけます。 HuluがありそうなAJAXを使用して、舞台裏で定期的に更新します。 Firebugののようなものを使用してビデオを見ながら、あなたがネットトラフィックを監視している場合(実際には、あなたは時折呼び出しが表示されます)http://t2.hulu.com/v3/playback/position?...します。

他のヒント

彼らは、あなたのセッションがサーバー上で離れて行った時、あなたがた後、店をいくつかのレコードIDとクッキーを書き込むことができます。あなたは、クライアントが時々、言うことACKを送り返すことによってどこ彼らは知ることができる「はい、私は時間Tがたにプレーした。」

あなたが戻ってきたときに

は、その後、彼らはあなたがいた彼らのデータベースにルックアップするためにクッキーにレコードIDを使用します。彼らはまだ接続が去っていきました知っている、あなたはどのように切断する問題ではありません。

私は推測しているが、彼らはおそらく、サーバー側の位置を格納します。あなたが何かを見て再開することを行くとき、それは履歴書-からタイムスタンプとして最後に記録された位置を送信?

あなたはおそらくにしているページには、時折、あなたの現在のタイムスタンプ、それを言って、サーバにステータスパケットを送り返します。接続が切断されたときに、最後に記録された値が使用されます。

scroll top