پولینگ کوتاه، پولینگ طولانی و SSE

شما باید داده‌ها را از یک سرور به یک کلاینت ارسال کنید. در اینجا سه روش برای انجام این کار آورده شده است.

پولینگ کوتاه (Short Polling)

مشتری در یک رستوران را تصور کنید. مشتری هر ۵ ثانیه یک‌بار از پیشخدمت می‌پرسد که آیا غذا آماده است یا خیر.

مشتری این سوال را در فواصل زمانی منظم تکرار می‌کند.

مشکلات:

  • درخواست‌های بسیار زیادی به سرور شما وارد می‌شود.
  • به‌روزرسانی‌ها با تأخیر همراه هستند. اگر غذا ۱ ثانیه پس از پرسش آماده شود، مشتری ۴ ثانیه دیگر منتظر می‌ماند تا دوباره بپرسد.
  • باعث هدر رفتن منابع شبکه می‌شود.

پولینگ طولانی (Long Polling)

مشتری از پیشخدمت می‌پرسد: «هر وقت غذای من آماده شد، به من خبر بده.»

پیشخدمت کنار میز می‌ماند و منتظر می‌ماند. اگر آشپز غذا را آماده کرد، پیشخدمت بلافاصله به مشتری اطلاع می‌دهد. اگر آماده شدن غذا خیلی طول بکشد، پیشخدمت به مشتری می‌گوید که هنوز آماده نشده است.

مشکلات:

  • اتصالات برای مدت طولانی باز می‌مانند.
  • ممکن است با اتمام زمان اتصال (connection timeout) مواجه شوید.
  • مدیریت تعداد زیادی مشتری به طور همزمان دشوار است.

رویدادهای ارسال‌شده از سمت سرور (SSE)

قیمت‌های لحظه‌ای بازار بورس را تصور کنید. کلاینت یک بار اتصال را برقرار می‌کند. سرور این اتصال را باز نگه می‌دارد. هر زمان که قیمتی تغییر کند، سرور به‌روزرسانی را برای کلاینت ارسال می‌کند.

نکات کلیدی:

  • این یک ارتباط یک‌طرفه است.
  • داده‌ها فقط از سمت سرور به سمت کلاینت جریان می‌یابند.
  • کلاینت پیام‌ها را از طریق این اتصال به سمت سرور ارسال نمی‌کند.

منبع: https://dev.to/guruharish_b/short-polling-long-polling-and-sse-20o5