SignalR OnReconnect浏览新页面

时间:2016-10-19 02:29:08

标签: c# asp.net-mvc razor asp.net-mvc-5 signalr

我最近了解了SignalR并实现了持久联机连接检查,其中状态存储库是SQL数据库。 它可以正确检测用户何时在线/离线。问题变为当用户在线浏览Home/Index.cshtml然后转到Home/Edit.cshtml时,OnDisconnected被解雇,因此它会创建新连接。如果我想保持连接打开怎么样?我已将集线器连接放在_Layout.cshtml中,但显然会在浏览新页面时重新加载。 我试图增加:

GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(110);

GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(45);

GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(15);

Startup.cs之前的app.MapSignalR();。没有用,不知道为什么。

因此,如果我想保持聊天api,用户将暂时离线/在线。我想阻止这一点。

2 个答案:

答案 0 :(得分:0)

只需实施OnReconnected()方法,并让您的用户保持在线状态。

public override Task OnReconnected()
{
   string name = Context.User.Identity.Name;

   if (!_connections.GetConnections(name).Contains(Context.ConnectionId))
   {
       _connections.Add(name, Context.ConnectionId);
   }

   return base.OnReconnected();
}

完整示例here

答案 1 :(得分:0)

在这种情况下 - 创建母版页(mvc情况下的布局页面),在母版页中,将用户连接到信号服务器。因此,如果用户将重定向到其他页面,它将与信号服务器连接。