راکت
حل شده

وضعیت آنلاین با ajax

6 پاسخ

سلام دوستان..

توی مادل ادمین یه دونه متد دارم به نام isOnline که true و false برمیگردونه که مشخص کننده آنلاین و آفلاین بودن ادمین هستش..

توی ویوی خودم آنلاین بودن و آفلاین بودن ادمین رو دارم ولی خب با رفرش شدن صفحه آپدیت شده رو میتونم ببینم..

میخوام هر لحظه که کاربر آنلاین یا آفلاین بشه بلافاصله توی پیج وضعیتش اعمال بشه بدون ریفرش کردن صفحه..

فقط میدونم با ایجکس باید این کار رو انجام بدم..

ولی نمیدونم چجوری؟

ممنون میشم کمکم کنید..

بازم تاکید میکنم متد داخل مادل هست نه کنترلر..

JBolouri
JBolouri
@javadbolouri72
ثبت پرسش جدید

پاسخ‌ها

6
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

با اینکه با ارسال های درخواست ajax به سرور میتونید وضعیت آنلاین بودن کاربران رو بگیرید ولی به هیچ وجه کار بهینه و شاید درستی نباشه. چون:

اینکه هر یک ثانیه یک درخواست بخواید بفرستید سمت سرور، باعث میشه برای ۱۰۰ کاربر، در دقیقه چیزی معادل 6000 ریکوئست داشته باشید. در حالیکه در حالت عادی شاید کمتر از 20 ریکوئست وجود داشت. نکته دوم هم اینکه دقت کار بسیار پایین هست. چون خود بک اند بصور مستقیم امکان تشیص آنلاین/آفلاین بودن کاربران رو نداره. اینکار با یک سری روش های غیر مستقیمی انجام میشه که هر کدوم نقص های زیادی داره و باعث میشه نتیجه از دقت لازم برخوردار نباشه.

روش حرفه ای و اصولی این کار استفاده از وب سوکت هست. هم باعث میشه فقط وقتی تغییری در وضعیت آنلاین/آفلاین بودن کاربران رخ میده یک پیام از سمت سرور ارسال بشه و خبری از 6000 ریکوئست بی جهت نیست. و هم اینکه با دقت بسیار بالاتر به محض آنلاین و آفلاین شدن قابلیت آپدیت داره.

توضیحات بیشتر رو میتونید از مستندات خود لاراول بخونید و مثال هاش رو ببینید:
https://laravel.com/docs/7.x/broadcasting

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

شما باید یه درخواست ایجکس برای کاربرانی که در پیج شما هستن بفرستین سرور. میتونیدتمام ادی هاشونو در قالب یک رشته ارسال کنید طرف سرور هم ایدیهارو باز کنید کاربرهارو در یک حلقه بخونید وضعیتشونو بیرون بیارین و نتیجه رو در قالب یک ارایه برگردونید.که اندیس این ارایه ایدی کاربر میشه مقدار هر اندیس هم وضعیت اون کاربر. بعد در سمت فرانتند با یک حلقه این ارایه رو میپیمایی و وضعیت های جدیدو ست می کنی.
نکته مهم المنت های اچ تی ام الی که وضعیت انلاین یا افلاینو نشون میدن باید به صورت زیر نام گذاری بشن
مثلا userstatus-userid
Userstatus-1
در حلقه for این المنت هارو انتخاب می کنی و مقدار جدیدو حالا عددی یا اگه کلاس بود به تگ صفحه میدی

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

این درخولستو هر ثانیه باید بفرستی از تابع setinterval جاوااسکریپت هم استفاده کن. توضیحاتم بیشتر کلی بود

شاید پاسخ شما همین‌جا باشد

JBolouri
JBolouri
@javadbolouri72

@hosseinshirinegad98

تا حدودی فهمیدم.. یه تست بکنم ببینم به مشکلی برمیخورم یا نه..
فقط یه سوال..
برای درخواستای ajax باید روت اختصاصی تعریف کرد توی web.php دیگه؟

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

JBolouri
JBolouri
@javadbolouri72

@mhyeganeh

بله حق با شماست منطقی نیست اینطوری درخواست رد و بدل بشه برا این کارا..
ممنون 🌷

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام