2014-01-23 88 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