使用SignalR检测“服务器离线”

我们正在尝试在低带宽环境中使用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

您使用的是什么版本的SignalR? 在最新版本(以及之前的版本)中,将立即检测到脱机服务器,并通过重新连接标志引发状态更改。

要杀死服务器,我认为你的意思是关闭IIS .eg iisreset。 在inetmgr中停止网站不会关闭网站,它只是删除该端口的Http.sys绑定。 有关详细信息,请参阅https://github.com/SignalR/SignalR/issues/1148 。

如果你想模拟服务器停机w3wp。