سعید
سعید
خواندن ۲ دقیقه·۱ سال پیش

نمونه استفاده SSE در لاراول (بخش اطلاع رسانی)

فرض کنید یک سیستم اطلاع رسانی در پنل مدیریت ایجاد کردید.

به این صورت که تعداد پیام های دریافتی از سایر کاربران را در نوار بالا نشان می دهد.

مثلا به این شکل:

حالا برای این که تعداد این پیام ها به صورت لحظه ای (real time) تغییر کنه چند تا راه وجود دارد.

دو مورد از این راه ها AJAX و SSE هست.یعنی شما هر چند لحظه درخواست به سرور بفرستید و تعداد پیام ها را دریافت کنید و نمایش دهید.

توضیح AJAX:

روشی برای ارتباط میان سرور و کلاینت است و پیشبرد به‌روزرسانی بخش‌های مختلف یک سایت را بدون بارگذاری مجدد تمام صفحه به وسیله Ajax انجام می‌شود. یکی از روش‌های متعددی که امکان پویایی و واکنش‌پذیری وب‌سایت‌ها را فراهم می‌کنند.

توضیح SSE:

مخفف رویداد های طرف سرویس دهنده هست یعنی اون توابعی که در قمست سرویس دهنده اجرا میشه و نتایج اون به صورت Real time یعنی بدون وقفه به کاربر یا سرویس گیرنده (Client) ارسال میشه . یعنی بدون نیاز به ارسال درخواست HTTP چه به صورت Ajax و یا معمولی ، اطلاعات رو از سرویس دهنده (Server) دریافت میکنه نمونه کامل تر این فرآیند وب سوکت هست.



نمونه کد بالا هر 10 ثانیه یک درخواست ajax به سمت سرور ارسال می کند و اطلاعات را دریافت می کند.

برای نمایش اطلاعات هم از کد زیر استفاده می کنیم:

و اما برای SSE قضیه کمی فرق می کند.سرور یک درخواست نامحدود برای کاربر ایجاد می کند و اطلاعات را لحظه ای در آن نمایش می دهد.

برای دریافت اطلاعات در Javascript به کدی شبیه به این نیاز دارید :

و برای سمت سرور هم به این شکل (سعی کنید از پکیج هایی که برای این مورد وجود دارد استفاده کنید):



و اما یک بررسی کوچک روی بهینه بودن این دو روش:

هر دو روش به شرط مدیریت منابع می تواند راه حل مناسبی باشد و اجازه دهید یک بررسی که برای وب سرور آپاچی در سیستم عامل ویندوز انجام دادم را با هم ببینیم.

صفحه داشبورد به تعداد 10 تب در مرورگر کروم باز شده.یعنی هر 10 تب مرورگر هر 10 ثانیه یک درخواست ajax به سمت سرور ارسال می کنند.

در AJAX:

در SSE:

همین طور که می بینید ، در SSE بار بسیار کمی روی cpu هست،درحالی که در استفاده از ajax مقداری از cpu درگیر هست.


امیدوارم از این بررسی و توضیح مختصر استفاده ببرید.




آخرین مطالب من را می توانید در آدرس زیر مشاهده کنید

https://virgool.io/@saeed.es91



سمت سرورلاراولajaxبرنامه نویسی
عاشق سفر هستم با این که قبلا عاشق برنامه نویسی بودم !
شاید از این پست‌ها خوشتان بیاید