SignalR连接错误

SignalR连接错误

问题描述:

我有一个使用SignalR和MVC运行的简单聊天客户端项目,它几乎与ASP.Net One(我只是试验 - 客户端代码是相同的)完全相同。因为它们发生,我有线了下面看的东西:SignalR连接错误

$.connection.hub.stateChanged(function(state){console.log(state)}); 

的连接工作正常,但我发现,如果我关闭IIS Express和观看Chrome的控制台,我看到:

//As you would expect the state goes from connected to connecting 
Object {oldState: 1, newState: 2} 

//Then it times out after about 30 secs and throws this awesomeness at the console 
WebSocket connection to 'ws://localhost:61623/signalr?transport=webSockets&connectionToken=VDF640emz7PFMToC6vxle_5-7QS5dZMszV4SPbQO7EFEmSSsITnwKsZreqfl4MGq8TXitG2xB5F-2ZdHp-2t3shPzN2hemTY1ZmEWlB8NOn5orUVexaSoARk9XjEO5B00&connectionData=%5B%7B%22name%22%3A%22chathub%22%7D%5D&messageId=B%2C7%7CL%2C0%7CM%2C0%7CN%2C0&tid=0' failed: WebSocket is closed before the connection is established. jquery.signalR-1.0.1.js:1117 

//Reconnecting to Disconnecting - so why the error above? 
Object {oldState: 2, newState: 4} 

//Then radio silence if I start IIS again... 

2个问题:

如何避免错误时,企图重新连接失败?

为什么SignalR不会继续尝试连接到IIS?我的印象是,这是该技术的点...

编辑下:同样的事情发生在Firefox太

+0

不知道这是否会帮助您解决问题。 https://github.com/SignalR/SignalR/wiki/Configuring-SignalR – 2013-05-09 15:16:41

+0

@TimBJames - 感谢蒂姆,这真的只是做它超时,我不介意它超时如果服务器爆炸并停止响应,我只想优雅地处理客户端错误:-) – Rob 2013-05-14 06:36:55

+0

在[JabbR](https://jabbr.net/#/rooms/signalr)中粘贴此问题的链接,因为可能有人会帮助您。 – 2013-05-14 08:02:06

最终,连接会死,停止重试。您可以使用SignalR Docs不断重新连接此方法。

How to continuously reconnect

如何不断重新

在您可能希望它已经丢失,并重新尝试具有 超时后自动重新建立连接 一些应用。要做到这一点,您可以从您的Closed 事件处理程序(JavaScript客户端上的断开事件处理程序)调用Start方法。您在呼叫开始之前可能需要等待一段时间,以便 避免在服务器或物理 连接不可用时过于频繁地执行此操作。以下代码示例适用于使用生成的代理的 JavaScript客户端。

$.connection.hub.disconnected(function() { 
    setTimeout(function() { 
     $.connection.hub.start(); 
    }, 5000); // Restart connection after 5 seconds. 
});