2016-09-22 45 views
0

我有一個運行SignalR,Angular和Typescript的頁面。當電流$scope被破壞(如換頁),我嘗試從SignalR服務器斷開連接客戶端:

Controller.ts

$scope.$on("$destroy",() => Service.Disconnect()); 

我的前端服務則具有這樣的功能:

Service.ts

public Disconnect() { 
    this.hub.disconnect(); 
} 

小號o當我改變頁面時,客戶端從集線器斷開。正如我在控制檯中所看到的那樣,這完美地工作:

SignalR:停止連接。 SignalR:關閉Websocket。

SignalR:觸發ajax abort async = true。

SignalR:停止保持活動狀態的監視。

完美地工作。然而,當我然後加載一個新的狀態,並且我的連接再次被設置時,舊連接以某種方式「保持」,因爲它然後嘗試連接兩次。如果我然後再轉到其他頁面,它會嘗試連接3次。

編輯

這似乎是stateChanged被調用多次。多次調用連接設置的次數。嗯,我想知道爲什麼當我將客戶端從集線器斷開連接時。修正了一個簡單的if already connected變量,我設置了第一次連接,但它不是很好。

有沒有正確的方法來斷開客戶端?服務器/後端集線器是否也應該處理斷開連接?除$scope被毀壞之外,我還需要做其他事情嗎?

+0

你有沒有找到一個適當的斷開樞紐。在Ionic 2中,我遇到了同樣的問題,信號發生器 –

+0

您是否找到解決此問題的解決方案?我遇到完全相同的問題。 – Flyingkiwi

回答

0

爲什麼你不使用this.hub.stop();

+0

'hub.stop不是函數'就是我所得到的。我調用'this.hub.stop()'而不是調用'this.hub.disconnect()'。 – MortenMoulder

+0

使用this.hub.stop()它正在運行? – Tester

+0

是的,集線器正在運行。 'hub'不包含一個叫做'stop'的方法。它包含這些:http://i.imgur.com/k2NC8eK.png(其中大部分是我的註冊功能)。 – MortenMoulder