16 پاسخ

نمایش کاربران آنلاین در لاراول

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


ثبت پرسش جدید
محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 6 سال پیش مطرح شد
2

طرز ایجاد همچین سیستمی پیدا کردم دوستان کسی اگه احتیاج داشت قرار بدم


علی باقری
تخصص : برنامه نویس وب
@alibagheri 6 سال پیش مطرح شد
0

سلام .
اگه قرار بدید بد نیست شاید یجا بدردمون بخوره .
تشکر


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 5 سال پیش آپدیت شد
3

ابتدا یک Middleware با نام دلخواه ایجاد میکنیم

به فرض مثال اسمش UserActivity قرار میدیم

بعد وارد اون Middleware میشیم و کد زیر رو بهش اضافه میکنیم

public function handle($request, Closure $next)  
{  
if (Auth::check())  
{  
$expiresAt = Carbon::now()->addMinutes(1);  
Cache::put('user-is-online-' . Auth::user()->id, true,$expiresAt);  
}  
return $next($request);  
}  

بعدش باید این فایل به قسمت $middlewareGroups درون فایل Kernel.php اضافه کنیم

به شکل زیر:

protected $middlewareGroups = \[  
'web' => \[  
\\App\\Http\\Middleware\\EncryptCookies::class,  
\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,  
\\Illuminate\\Session\\Middleware\\StartSession::class,  
// \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,  
\\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,  
\\App\\Http\\Middleware\\VerifyCsrfToken::class,  
\\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,  
\\App\\Http\\Middleware\\UserActivity::class,  
\],  

بعد وارد مدل user میشیم و کد زیر بهش اضافه میکنیم

public function isOnline(){
    return Cache::has('user-is-online-' . $this->id);
}

بعد از این مراحل وارد کنترلر مورد نظر خودمون میشیم و اطلاعات user به ویو مورد نظر خودمون ارسال میکنیم

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

@foreach($users as $user)
                        @if($user->isOnline())

                                <button class="btn-success btn" style="cursor: default; "  > Online </button>

                        @else

                                <button class="btn-dark btn" style="cursor:default;"> Offline </button>

                        @endif

@endforeach  

بازم هم سوالی بود در خدمتم


علی باقری
تخصص : برنامه نویس وب
@alibagheri 6 سال پیش مطرح شد
0

بسیار عالی . تشکر


abbas133
@133jafari 6 سال پیش مطرح شد
0

سلام ممنون بابت پستتون مفید بود
روی همه کاربرا حلقه گذاشتین؟؟
اگه جواب بله هست > مشکلی پیش نمیاد ؟


Mobin Yazdanparast
تخصص : برنامه نویس اندروید ، وب
@mobinyazdanparast9 6 سال پیش مطرح شد
0

میتونید از این اموزش استفاده کنید.
https://www.youtube.com/watch?v=BVlDG0OLbVE


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 6 سال پیش مطرح شد
1

@133jafari
بله روی همه حلقه زدم تا آنلاین و آفلاین هارو نشون بده


sss
@sedighegggg 5 سال پیش آپدیت شد
0

سلام
من تمام مراحلی که گفتین رو انجام دادم ورو همه ی کاربرا حلقه زدم تا آنلاین و آفلاین بودنشون رو نشون بده اما وقتی با یه کاربر لاگین میشم و صفحه نمایش وضعیت آنلاین بودن کاربرا رو لود میکنم همه ی کاربرا رو آنلاین نشون میده باید چکار کنم؟


sss
@sedighegggg 5 سال پیش آپدیت شد
0

ممنون میشم راهنماییم کنید


امین
@aminem95 5 سال پیش مطرح شد
0

@ghomi2018
میشه بگی چطور میشه با این روش تعداد کاربران آنلاین رو گرفت؟؟


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش مطرح شد
2

سلام
شما میتونین از پکیج زیر استفاده کنین
https://github.com/shetabit/visitor

کاربران انلاین

User::online()->get();

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 5 سال پیش مطرح شد
0

اگر چه روش اشاره شده هم به نوعی کار راه انداز هست ولی به نظرم روش اصولی تر و حرفه ای ترش استفاده از websocket هاست. در حالت قبلی شما بعد از لود شدن صفحه اگر کاربر آفلاین بشه یا افراد جدیدی آنلاین بشن ازشون بی خبر هستی. ولی با استفاده از web socket ها بصورت real-time هر اتفاقی که بیفته (آنلاین شدن افراد جدید یا آفلاین شدن افراد قدیم) در سمت فرانت اند بدون reload متوجهش خواهی شد.

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

مطالعه بیشتر:
https://devmarketer.io/learn/websockets-laravel-part-0-websockets/


علیرضا
@AliRezaa 5 سال پیش آپدیت شد
0

@ghomi2018
@mhyeganeh
@juza66

سلام.. فکر میکنم سوالم کمی به سوال (یا مطلب) این دوستمون شبیه باشه..

من در یکی از اولین پروژه هام (تمرینی) برای اینکه بگم کاربر "چقدر قبل" آنلاین بوده، اول در مدل یوزر یک تابع تعریف کردم که با هربار فراخوانی، زمان now رو به دیتابیس رکورد میکنه. بعد در بلید master (که در همه پیجها include شده و همه جا هست) اون تابع رو برای کاربر لاگین شده فراخوانی کردم! اینطوری با لود هر صفحه اون تابع فراخوانی و اجرا میشه و هر جا هم همون رکورد (مربوط به هر یوزر) رو از دیتابیس فراخوانی کنید (مثلا در پروفایل کاربر) طبعاً آخرین زمان لود یک پیج توسط کاربر رو نشون میده. (از پکیج Verta برای تبدیلات تایم و تاریخ و .. استفاده کردم) .

خیلی روش داغونی استفاده کردم عایا؟ :/


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 5 سال پیش مطرح شد
2

@AliRezaa

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

ضمن اینکه ایراد روش قبلی باز هم به این روش وارد هست و اون هم اینکه بعد از لود صفحه هیچ گونه اطلاعات جدیدی دریافت نمیکنید. مگر اینکه مجددا صفحه رو رفرش کنید. ولی با وب سوکت ها یک ارتباط پایدار ایجاد میشه که باعث میشه هر اتفاقی می افته بصورت real-time در سمت فرانت اند هم ازش مطلع بشیم.


مجید
تخصص : برنامه‌نویس
@kashefymajid1992 5 سال پیش مطرح شد
0

@AliRezaa
اموزش کاربری از وبسوکتها ذر لاراول رو میتونید معرفی کنید؟


علیرضا
@AliRezaa 5 سال پیش مطرح شد

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

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