我正在使用signalR跟踪页面上有多少人在线。
它在用户登录时更新列表。
matches(CustomItemMatchers.withErrorName(equalTo("My Error")))
我已经尝试了很多东西,当他们退出时从列表中删除用户,但到目前为止,我无法使任何工作。
有人知道如何做到这一点。
答案 0 :(得分:1)
向ChatHub
添加方法,以便您可以从用户名中查询ConnectionId
。然后做这样的事情;
<强>控制器强>
public class AccountController : Controller
{
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly IHubContext<ChatHub> _hubContext;
public AccountController(
SignInManager<ApplicationUser> signInManager,
IHubContext<ChatHub> hubContext)
{
_signInManager = signInManager;
_hubContext = hubContext;
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> LogOff()
{
var connectionid = ChatHub.GetConnectionIdByName(User.Identity.Name);
await _signInManager.SignOutAsync();
await _hubContext.Clients.Client(connectionId).logoff();
return RedirectToAction(nameof(HomeController.Index), "Home");
}
}
<强>的Javascript 强>
$.connection.chathub.client.logoff = function() {
$.connection.hub.stop();
}