我们正在尝试在低带宽环境中使用 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');
}
});
任何指导将不胜感激,谢谢!
-杰里米