0
希望大家都很好。 我使用MVC C#,AspNet.Identities并拥有一个功能齐全的账户控制器。如何在通过Web SignalR Hub断开连接时注销用户?
我最近在项目中引入了一个基本的SignalR Hub,我想在用户从集线器断开连接后登录用户。我的想法是从账户控制器调用LogOff方法。
Hub非常简单,事实上,如果我没有弄错,我从Scott Hanselman的视频中看到了这一点。只是hitCounter的一部分...现在我试图添加注册()功能。
这是我到目前为止。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Welcome", "Home");
}//this is in my account controller
[Authorize]
[HubName("hitCounter")]
public class GameplayHub : Hub
{
private static int intCounter = 0;
public void RecordHit()
{
intCounter += 1;
this.Clients.All.onHitRecorded(intCounter);
}
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
{
Final.Controllers.AccountController obj = new Final.Controllers.AccountController();
intCounter -= 1;
this.Clients.All.onHitRecorded(intCounter);
this.Clients.Caller.onHitRecorded(obj.LogOff());
obj.LogOff();
return base.OnDisconnected(stopCalled);
}
}//this is the hub
<div id="hitCount" style="font-size:50px;"></div>
<script src="~/Scripts/jquery-1.6.4.js"></script>
<script src="~/Scripts/jquery.signalR-2.1.1.js"></script>
<script src="/signalr/hubs"></script>
<script>
$(function() {
var con=$.hubConnection();
var hub=con.createHubProxy('hitCounter');
hub.on('onHitRecorded', function (i) {
$('#hitCount').text(i);
});
con.start(function() {
hub.invoke('recordHit');
});
})
</script>//My view...just shows how many people active at that point...
活跃的人数,显示正确。我在我的应用程序中试图做的是,如果用户位于2个选项卡上,并且他关闭了一个,则必须在两个选项卡上注销。
任何帮助将不胜感激!谢谢:)