现在,我已经覆盖了SignalR的OnDisconnect方法,如下所示:
public override Task OnDisconnected()
{
if (this.Context.User != null)
{
string userName = this.Context.User.Identity.Name;
var repo = new LobbyRepository();
Clients.Group("Lobby").remove(userName);
repo.RemoveFromLobby(userName);
}
return base.OnDisconnected();
}
但是,每次用户导航到任何视图时都会触及此代码,暂时中断signalR连接。如何仅在用户请求某个视图时才能防止这种情况发生?
答案 0 :(得分:0)
只要您在同一页面中,就可以保持连接,如果您离开,连接就会结束。
您可以使用名为“点击劫持”http://mislav.uniqpath.com/2011/03/click-hijack/
的技术,使用Ajax替换页面内容但请记住,连接与您的网页相关联。
干杯。