مشترک شدن در اعلان‌های لحظه‌ای

‫YouTube Data API (v3) از اعلان‌های لحظه‌ای ازطریق PubSubHubbub، یک پروتکل انتشار/اشتراک سرور به سرور برای منابع قابل‌دسترس در وب، پشتیبانی می‌کند. اعلان‌ها ازطریق وب‌قلاب‌های HTTP به مشترکین ارسال می‌شوند که بسیار کارآمدتر از راه‌حل‌های مبتنی بر نظرسنجی است. با PubSubHubbub، سرور شما تقریباً به‌صورت هم‌زمان از رویدادها مطلع می‌شود، بدون اینکه نیاز به تعیین فاصله زمانی بهینه برای نظرسنجی یا واکشی مکرر داده‌هایی که تغییر نکرده‌اند داشته باشد.

وقتی کانالی هریک از فعالیت‌های زیر را انجام می‌دهد، سرور تماس برگشتی PubSubHubbub شما اعلان‌های فید Atom را دریافت می‌کند:

  • ویدیویی را بارگذاری می‌کند
  • عنوان ویدیو را به‌روز می‌کند
  • شرح ویدیو را به‌روزرسانی می‌کند

مراحل زیر نحوه مشترک شدن در اعلان‌ها را توضیح می‌دهد:

  1. سرور تماس برگشتی راه‌اندازی کنید که بتواند اعلان‌های فید Atom ورودی را مدیریت کند.

  2. از مرکز Google برای مشترک شدن و دریافت اعلان‌های لحظه‌ای استفاده کنید:

    • حالت را روی subscribe تنظیم کنید. (یا برای لغو اشتراک، حالت را روی unsubscribe تنظیم کنید.)

    • نشانی وب تماس برگشتی را روی نشانی وبی که در مرحله ۱ راه‌اندازی کردید تنظیم کنید.

    • نشانی وب موضوع را روی https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID تنظیم کنید، که در آن CHANNEL_ID شناسه کانال YouTube است که می‌خواهید اعلان‌های لحظه‌ای را برای آن بازیابی کنید.

  3. اعلان‌های ارسال‌شده به سرور تماس برگشتی را پردازش کنید. قالب اعلان در زیر نشان داده شده است. توجه داشته باشید که می‌توانید از مقدار عنصر <yt:videoId> برای شناسایی ویدیو جدیداً اضافه شده یا به‌روزرسانی‌شده استفاده کنید. همچنین می‌توانید از مقدار عنصر <yt:channelId> برای شناسایی کانالی که مالک آن ویدیو است استفاده کنید.

    <feed xmlns:yt="http://www.youtube.com/xml/schemas/2015"
             xmlns="http://www.w3.org/2005/Atom">
      <link rel="hub" href="https://pubsubhubbub.appspot.com"/>
      <link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID"/>
      <title>YouTube video feed</title>
      <updated>2015-04-01T19:05:24.552394234+00:00</updated>
      <entry>
        <id>yt:video:VIDEO_ID</id>
        <yt:videoId>VIDEO_ID</yt:videoId>
        <yt:channelId>CHANNEL_ID</yt:channelId>
        <title>Video title</title>
        <link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/>
        <author>
         <name>Channel title</name>
         <uri>http://www.youtube.com/channel/CHANNEL_ID</uri>
        </author>
        <published>2015-03-06T21:40:57+00:00</published>
        <updated>2015-03-09T19:05:24.552394234+00:00</updated>
      </entry>
    </feed>