SignalR连接错误

Rob*_*Rob 5 asp.net-mvc-4 signalr

我有一个使用SignalR和MVC运行的简单聊天客户端项目,几乎与ASP.Net One相同(我只是在试验 - 客户端代码是相同的).我已经连接了以下内容来观察发生的事情:

$.connection.hub.stateChanged(function(state){console.log(state)});
Run Code Online (Sandbox Code Playgroud)

连接工作正常但我注意到如果我关闭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...
Run Code Online (Sandbox Code Playgroud)

2个问题:

尝试重新连接失败时如何避免错误?

为什么SignalR不继续尝试连接到IIS?我认为这是技术的重点......

编辑:同样的事情也发生在FireFox中

Dou*_*oug 11

最终,连接将死亡并停止重试.您可以通过SignalR Docs不断重新连接此方法.

如何连续重新连接

如何连续重新连接

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

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