سؤال

أنا أشاهد برنامجًا تلفزيونيًا على Hulu.com (وهو أفضل موقع لبث الفيديو على الإطلاق) وما إذا كنت أغلق متصفحي، أو أقطع اتصالي بالإنترنت، وحتى إذا قمت بإعادة تشغيل جهاز الكمبيوتر الخاص بي في منتصف مشاهدة أحد البرامج التلفزيونية. في المرة القادمة التي أذهب فيها إلى موقعهم، يمكنني استئناف تشغيل التلفزيون من الوقت الذي توقفت فيه عن العرض بالضبط.

سؤالي هو من منظور برمجة الويب التفصيلي، كيف يمكنهم تحقيق ذلك؟أفترض أنها لا تستخدم الجلسات لأنني لا أعتقد أن ذلك سينجح إذا قمت بإعادة تشغيل جهاز الكمبيوتر الخاص بي.إذا كان يستخدم ملفات تعريف الارتباط، فكيف يمكنهم تحديث ملف تعريف الارتباط باستمرار مع موقعك في العرض؟

من أجل الحصول على المكافأة المرفقة، يرجى تضمين أمثلة التعليمات البرمجية بلغة Java/JSP المفضلة (PHP مناسبة أيضًا) لكيفية إنشاء ملف تعريف الارتباط ومقتطف من التعليمات البرمجية من جانب الخادم التي من شأنها أن تسمح بموضع المشاهد المحدث.

شكرًا!

هل كانت مفيدة؟

المحلول

إحدى الطرق البسيطة هي أن يتمكن المشغل من تحديث ملفات تعريف الارتباط الخاصة بك عبر JavaScript، ويمكن استدعاء وظيفة JavaScript هذه في كل مرة ن ثواني بواسطة مشغل الفلاش:

<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 of video}" وإذا كان الأمر كذلك، فإن قيمة ملف تعريف الارتباط هذا هي الموضع الذي تم تعيينه في المرة الأخيرة التي كنت تشاهده فيها.

مرة أخرى (كما هو مذكور في البداية) هذه طريقة بسيطة جدًا لإنجاز ما تطلبه.أجد أن أفضل طريقة للتعلم هي اتباع تطبيق بسيط ثم إضافة التعقيد بمجرد فهم الحالة الأبسط جيدًا.من المحتمل أن تقوم Hulu بإجراء تحديثات دورية خلف الكواليس باستخدام AJAX.(في الواقع، إذا شاهدت حركة المرور الصافية أثناء مشاهدة مقطع فيديو باستخدام شيء من هذا القبيل فايربوغ, ، ستشاهد مكالمات من حين لآخر إلى http://t2.hulu.com/v3/playback/position?...).

نصائح أخرى

ويمكن إرسال ملف تعريف الارتباط مع بعض معرف سجل، ثم المتجر حيث كنت عندما انفجرت جلسة العمل الخاصة بك بعيدا على الخادم. ويمكن أن تعرف أين أنت من خلال وجود العميل إرسالها مرة أخرى إلى ACK بين الحين والآخر أن يقول: "نعم، لقد لعبت حتى الساعة T".

وبعد ذلك عندما كنت أعود أنها تستخدم معرف سجل في ملف تعريف الارتباط لبحث في قاعدة البيانات الخاصة بهم حيث كنت. لا يهم كيف قطع، فإنها لا تزال تعرف اتصال ذهب بعيدا.

وأنا مجرد تخمين، لكنها ربما تخزين الموقف في نهاية الخدمة. عندما تذهب لاستئناف مشاهدة شيء، فهو يرسل الموقف سجلت الماضي مع استئناف-من الطابع الزمني؟

وصفحة كنت على الارجح أحيانا يرسل الحزم الوضع مرة أخرى إلى الخادم، وقالت انها الطابع الزمني الحالي. عندما يتم قطع الاتصال، يتم استخدام القيمة المسجلة الماضية.

scroll top