دسته بندی ها
14:22 1398/08/05

تشخیص افراد آنلاین در سایت در Asp.net core

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1635     رتبه کاربر : 2
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4782
هوش مصنوعی

پاسخ هوش مصنوعی

برای تشخیص اینکه چند نفر هم اکنون در سایت آنلاین هستند، می توانید یک رویکرد مبتنی بر مدیریت وضعیت کاربر استفاده کنید. یکی از روش های معمول، استفاده از 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();
}

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 15:53 1398/08/05

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

نحوه کار به این صورت هست که در فرانت یا سمت کاربر بین کلاینت و سرور یک Hub تعریف می کنید که کانکشن رو بین کلاینت و سرور باز نگه می داره. در کلاینت به این رویداد گوش میدید و به محض اینکه کاربر آنلاین شد یا آفلاین شد میاید و رابط کاربری رو آپدیت می کنید.

توضیه میکنم اگر تا الان با SignalR کار نکردید یک بار یک پروژه با SignalR انجام بدید تا دقیقا بدونید منظور چی هست. این فیلم رو می تونید مشاهده کنید. ابزار SignalR برای تولید اپلیکیشن های RealTime استفاده میشه.

 

راه حل دوم استفاده از جی کوئری

راه حل بعدی هم استفاده از کدهای جی کوئری و یا جاوا اسکریپت هست. به این منظور که به محض اینکه Page برای کاربر load بشه کاربر رو آنلاین فرض می کنیم و موقع ترک Page یا close اون هم کاربر رو آفلاین فرض می کنیم.

اما راه حل اول بهتره 

موفق باشید

ویرایش شده در یکشنبه 5 آبان 1398 ساعت 15:53:52
به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود