【问题标题】:SignalR connect errorSignalR 连接错误
【发布时间】:2014-01-23 12:56:33
【问题描述】:

我使用 SignalR 2.0.0 Win2012 iis8 和两个具有两个不同 ips 的环境。 一个环境服务启动,第二个关闭(故意) 使用 websocket 协议。

我有以下情况: 当我连接到第一个环境并想要连接到第二个环境时。 我从第一个环境断开连接并尝试连接到第二个环境我得到错误(它的正确行为) 我尝试重新连接回第一个环境,但仍然出现同样的错误。

错误是“协商请求期间出错”。 刷新浏览器后,我可以再次成功连接到第一个环境。

我做错了什么?

这是我的代码的一部分:

function connect(host)
{

  var hubConnection = $.hubConnection.('');

  hubConnection.url = host;

  hubConnection.start()
               .done(open)
               .fail(error);
}
function open()
{
  console.log('login success')
}
function disconnect()
{
  var self = this,
  hubConnection = $.hubConnection("");
  console.log('disconnect ')
  hubConnection.stop(true, true);
}
function error(error)
{
  var self = this,
  hubConnection = $.hubConnection("");
  console.log('connection error ')
  if(error && hubConnection.state !== $.connection.connectionState.connected)     
   {
    .....
    .....
    //logic detemninate wich environment ip was previous 
    connect(environment ip)
   }
}
//occured when button disconnect clicked
function disconnectFromFirstEnvironmentAndConnectToSecond()
{
 disconect();
 connect(second environment ip);
}
  .....
  .....
  connect(first environment ip);

【问题讨论】:

  • 添加您的 codez 以便我们提供帮助
  • 我添加了有问题的代码。谢谢

标签: signalr signalr-hub signalr.client


【解决方案1】:

您没有保留您的第一个连接参考。

也就是你创建了一个HubConnection,然后永远不会在以后可以使用的范围内捕获它;因此,当您稍后断开连接时,connection.stop 什么也不做,因为它没有在最初启动的 HubConnection 上调用 stop。

这最终可能会导致您有太多并发打开的请求,这将不允许您与服务器协商,从而导致您的错误。

我建议您修正停止/启动连接的方式。接下来,如果问题仍然存在,我会检查网络流量以确保发出有效请求。

【讨论】:

  • 对不起,我不明白你能在我的代码上解决这个问题。谢谢
  • 嗨,Taylor,你能回答我之前的问题吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
相关资源
最近更新 更多