我们正在尝试在低带宽环境中使用SignalR,其中与后端服务器的连接可以随机出现,我们希望我们的Web应用程序做出适当的响应。
看起来这个连接API在过去的一年里一直在变化,但根据最新的文档,我已经尝试连接到$ .connection.hub.stateChanged来检测连接状态的变化,我得到了当客户端从断开连接时,一对夫妇在启动时点击 - >连接 - >已连接,但当我停止服务器时,事件处理程序不会触发,当我再次启动服务器时,实时消息传递不再起作用。
为了测试这种情况,我在Windows 7上运行IIS中的ASP.NET Web服务器,并且Web客户端在Google Chrome中运行。一旦网站运行,并且正在交换消息,我就会在IIS中删除该网站,并且消息会停止,但客户端不会收到任何通知。
这是一个快速片段(使用TypeScript):
$.connection.hub.stateChanged((change) => {
console.log("state changed...");
console.log(change);
if (change.newState === $.signalR.connectionState.reconnecting) {
this.raise('action:disconnected');
}
else if (change.newState === $.signalR.connectionState.connected) {
this.raise('action:connected');
}
});
非常感谢任何指导,谢谢!
-Jeremy
答案 0 :(得分:5)
您使用的是什么版本的SignalR?在最新版本(以及它之前的版本)中,将立即检测到脱机服务器,并通过重新连接标志引发状态更改。
要杀死服务器,我认为你的意思是关闭IIS .e.g iisreset。在inetmgr中停止网站会 NOT 关闭网站,它只是删除该端口的Http.sys绑定。有关详细信息,请参阅https://github.com/SignalR/SignalR/issues/1148。
如果你想模拟服务器停机w3wp。