【发布时间】:2014-08-28 15:23:53
【问题描述】:
希望大家都好。 我正在使用 MVC C# 、 AspNet.Identities 并拥有一个功能齐全的帐户控制器。
我最近在项目中引入了一个基本的 SignalR 集线器,我想在用户与集线器断开连接后将其注销。我的想法是从 Account Controller 调用 LogOff 方法。
Hub 非常简单,事实上,如果我没记错的话,我是从 Scott Hanselman 的视频中截取的。只是 hitCounter 部分...现在我正在尝试添加 logoff() 功能。
这是我到目前为止所得到的。
[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 个选项卡上,并且他关闭了一个,他必须在两个选项卡上都注销。
任何帮助将不胜感激!谢谢:)
【问题讨论】:
标签: signalr