تشخیص افراد آنلاین در سایت در Asp.net core
چجوری میتونم تشخیص بدم که چند نفر کاربر در حال حاضر توی سایت آنلاین هستن ؟
سایتم با Asp.net core هست.
ممنون میشم راهنمایی کنید
پاسخ هوش مصنوعی
برای تشخیص اینکه چند نفر هم اکنون در سایت آنلاین هستند، می توانید یک رویکرد مبتنی بر مدیریت وضعیت کاربر استفاده کنید. یکی از روش های معمول، استفاده از Session و یک جدول در پایگاه داده برای ذخیره و بروزرسانی اطلاعات کاربرانی است که در حال حاضر آنلاین هستند.
در اینجا یک روش ساده برای پیاده سازی آن در ASP.NET Core به شما نمایش داده می شود:
ابتدا یک مدل برای ذخیره سازی اطلاعات کاربران آنلاین ایجاد کنید:
public class OnlineUser
{
public string UserId { get; set; }
public DateTime LastActivity { get; set; }
}
سپس یک سرویس برای مدیریت وضعیت کاربران آنلاین بنویسید:
public class OnlineUserService
{
private static List OnlineUsers = new List();
public void UserConnected(string userId)
{
var user = OnlineUsers.FirstOrDefault(u => u.UserId == userId);
if (user == null)
{
OnlineUsers.Add(new OnlineUser { UserId = userId, LastActivity = DateTime.Now });
}
else
{
user.LastActivity = DateTime.Now;
}
}
public void UserDisconnected(string userId)
{
OnlineUsers.RemoveAll(u => u.UserId == userId);
}
public int GetOnlineUserCount()
{
return OnlineUsers.Count;
}
}
سپس در روش های مربوط به ورود و خروج کاربر، از این سرویس استفاده کنید:
public class AccountController : Controller
{
private readonly OnlineUserService _onlineUserService;
public AccountController(OnlineUserService onlineUserService)
{
_onlineUserService = onlineUserService;
}
public IActionResult Login(string userId)
{
_onlineUserService.UserConnected(userId);
return View();
}
public IActionResult Logout(string userId)
{
_onlineUserService.UserDisconnected(userId);
return View();
}
}
در نهایت، برای نمایش تعداد کاربران آنلاین در هر صفحه، می توانید از متد GetOnlineUserCount استفاده کنید:
public IActionResult Index()
{
var onlineUserCount = _onlineUserService.GetOnlineUserCount();
ViewBag.OnlineUserCount = onlineUserCount;
return View();
}
با این روش می توانید تعداد کاربران آنلاین در سایت خود را مدیریت و نمایش دهید.
شما راههای مختلفی دارید اما یکی از راهها استفاده از SignalR هست. برای تشخیص آنلاین بودن کاربران و یا برای بدست آوردن تعداد کاربران آنلاین در سایت کار اصلی باید در سمت کلاینت انجام بشه. در واقع شما باید به رویدادهایی که از سمت کلاینت میرسه گوش کنید. برای این کار می تونید از این رفرنس استفاده کنید.
نحوه کار به این صورت هست که در فرانت یا سمت کاربر بین کلاینت و سرور یک Hub تعریف می کنید که کانکشن رو بین کلاینت و سرور باز نگه می داره. در کلاینت به این رویداد گوش میدید و به محض اینکه کاربر آنلاین شد یا آفلاین شد میاید و رابط کاربری رو آپدیت می کنید.
توضیه میکنم اگر تا الان با SignalR کار نکردید یک بار یک پروژه با SignalR انجام بدید تا دقیقا بدونید منظور چی هست. این فیلم رو می تونید مشاهده کنید. ابزار SignalR برای تولید اپلیکیشن های RealTime استفاده میشه.
راه حل دوم استفاده از جی کوئری
راه حل بعدی هم استفاده از کدهای جی کوئری و یا جاوا اسکریپت هست. به این منظور که به محض اینکه Page برای کاربر load بشه کاربر رو آنلاین فرض می کنیم و موقع ترک Page یا close اون هم کاربر رو آفلاین فرض می کنیم.
اما راه حل اول بهتره
موفق باشید
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2