jquery - 使用 SignalR 检测 'server offline'

标签 jquery asp.net-mvc 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');
   }
});

任何指导将不胜感激,谢谢!

-杰里米

最佳答案

您使用的是哪个版本的 SignalR?在最新的(以及之前的)中,服务器离线会立即被检测到,并且状态更改会通过重新连接标志引发。

要终止服务器,我假设您的意思是关闭 IIS。例如 iisreset。在 inetmgr 中停止网站并不会关闭该网站,它只是删除该端口的 Http.sys 绑定(bind)。请参阅https://github.com/SignalR/SignalR/issues/1148了解更多信息。

如果你想模拟服务器宕机,请杀死w3wp。

关于jquery - 使用 SignalR 检测 'server offline',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531450/

相关文章:

c# - Chrome 58 自签名证书

jQuery:如何制作可折叠的树导航?

c# - 为什么我在尝试创建用户时收到无效对象名称错误?

asp.net - 我怎样才能让 asp.net mvc Action 一致地向浏览器传送文件?

c# - 如何将复杂的 JSON 对象传递给 ASP.net Controller

c# - 如何在 .NET 客户端中通过 SignalR 发送大数据

sql-server-2012 - 在数据库级别启用服务代理对性能有何影响?

jquery - 维基百科 API JSONP 请求被阻止 mime 类型不匹配

javascript - 使用 javascript 更改 css3 边框属性

javascript - 删除第一组字段上的删除按钮