Yêu cầu Sep 8th, 2020 1:01 a.m. 764 0 2
  • 764 0 2
0

Hiện thị số người đang online và tổng số lượt đã truy cập website asp.net core

Chia sẻ
  • 764 0 2

Chào các bạn! Cho mình hỏi muốn hiện thị số người đang online và tổng số lượt đã truy cập website?

2 CÂU TRẢ LỜI


Đã trả lời Sep 8th, 2020 9:43 a.m.
0

Có 2 ý tưởng. Nếu không cần số hiển thị này cập nhật tức thời thì có thể lưu vào Database hoặc đếm số connection đang có ở tầng webserver. Tuy nhiên muốn xem số mới thì phải F5 lại trang và gọi lại function đếm người Online này. Nếu muốn cập nhật số này tức thời thì cần dùng đến các dịch vụ khác để theo dõi website, ví dụ như socket.io ... Mỗi khi số lượng người online thay đổi thì gọi đến Socket và nó sẽ tự làm mới giao diện số người online.

Chia sẻ
Đã trả lời Sep 10th, 2020 7:57 a.m.
0

@.@ Sao bạn ko sang hỏi mình !

Tạo 1 middleware dạng như này:

public class VisitorCounterMiddleware { private readonly RequestDelegate _requestDelegate;

public VisitorCounterMiddleware(RequestDelegate requestDelegate)
{
    _requestDelegate = requestDelegate;
}

public async Task Invoke(HttpContext context)
{
  string visitorId = context.Request.Cookies["VisitorId"];
  if (visitorId == null)
  {
     
   //Ở đây có thể lưu lại lượt xem vào trong database, với khóa chính là visitorId, value là số lần. 
  // Chưa tồn tại visitorId trong DB thì insert vào với value là 1, có tồn tại thì update value đó lên 2,3,4,5...etc

     context.Response.Cookies.Append("VisitorId", Guid.NewGuid().ToString(), new CookieOptions()
        {
                Path = "/",
                HttpOnly = true,
                Secure = false,
        });
   }

  await _requestDelegate(context);
}

}

Sau đó gọi nó trong Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseMiddleware(typeof(VisitorCounterMiddleware)); }

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí