我正在使用SignalR将更新推送到连接的Web客户端。我听,以便在disconnected
事件,知道什么时候应该开始SignalR不会触发“断开”事件
$.connection.hub.disconnected(function() {
// Initiate my own reconnection logic
});
的SignalR枢纽托管在IIS中我重新连接逻辑(连同我的网站)
[assembly: OwinStartup(typeof(Startup))]
namespace MyNamespace.SignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
连接时,客户端调用服务器方法加入群
public class MyHub : Hub
{
public void JoinGroup(string groupName)
{
Groups.Add(Context.ConnectionId, groupName);
}
}
然后我邮件推送到该组:
context.Clients.Group(groupName).sendMessage();
如果我手动回收IIS中的应用程序池,SignalR开始尝试重新连接,并且如果失败(超时后),我最终会在客户端收到一个disconnected
事件。
但是,我的问题是,如果我在IIS中手动重新启动网站,我根本没有收到任何disconnected
事件,并且我无法在日志中看到SignalR检测到任何连接问题。我如何检测到我已断开连接?
我知道,我也许应该坚持的组连接莫名其妙,因为这是保存在内存中,我猜。但是,这不应该影响客户没有收到断开通知的初始问题?客户端信号员代码不应该抛出某种异常/事件?第一
好的,我会看看你的代码。但是,如果我关闭应用程序池,则在信号器重新连接逻辑超时后约30秒后会收到断开连接。如果我停止了网站,我从来没有得到过这个事件,看起来,信号器重新连接逻辑从来没有启动过。 – Joel
Dissconnect事件应该触发后没尝试重新连接,您可以访问Chrome控制台,你会看到失败的尝试 – Anders
嗯注意到,标签是错误在我联系,现在的代码应该更容易阅读 – Anders