Hiện thị số người đang online và tổng số lượt đã truy cập website asp.net core
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
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.
@.@ 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)); }