2014-01-23 30 views
0

我使用SignalR 2.0.0 Win2012 iis8与两个不同的ips两个环境。 一个环境服务正在启动,第二个正在关闭(故意) 使用websocket协议。SignalR连接错误

我有以下情况: 当我连接到第一个环境,并希望连接到第二个。 我断开与第一个环境,并尝试连接到第二个环境,我得到错误(其正确行为) 我尝试重新连接回第一个环境,但我仍然有同样的错误。

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

我到底做错了什么?

这是我的代码部分:

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); 
+0

加入您的codez,我们可以帮助 –

+0

我加了问题的代码。谢谢 – user3227750

回答

0

你不会保留你的第一个连接的参考。

又名:您创建HubConnection,然后永远不会将其捕获到稍后可用的范围中;因此,稍后断开连接时,connection.stop不会执行任何操作,因为它不是在最初启动的HubConnection上调用stop。

这最终可能会导致您有太多的同时打开的请求,这将不允许您与服务器进行协商,因此您的错误。

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

+0

对不起,我不明白你可以解决我的代码。 谢谢 – user3227750

+0

嗨泰勒, 你能对我以前的问题态度吗?谢谢 – user3227750