2017-09-14 46 views
1

我訂閱使用NG2-跺腳服務插座:NG2跺腳客戶退訂()不工作

this.fooSubscription = this.stomp.subscribe('/topic/foo', (res) => { 
    console.log('do stuff with res'); 
}); 

這個偉大的工程來接收數據。但是在某個時候(當點擊一個按鈕時),我想停止接收數據。該連接仍在使用其他訂閱,所以我只想取消訂閱此特定訂閱。我有這種情況發生在單擊按鈕時:

unsubscribeFoo() { 
    this.fooSubscription.unsubscribe(); 
} 

不過,我依然清晰地獲取數據,從該訂閱未來,因爲它是從服務器發送。

當我取消,我看到這在我的瀏覽器控制檯從跺腳的調試輸出,這看起來很有希望:

>>> UNSUBSCRIBE 
id:sub-3 

但是,唉,我仍然得到的數據只是片刻之後。

+0

我有同樣的問題,你發現任何修復? – Mardari

+0

@Mardari nope,我最終打開了多個連接,並在每個連接上創建了一個訂閱,允許我通過斷開特定連接來停止單個訂閱的數據流。必須有更好的方法,但我找不到它。 – David

回答

0

我認爲你需要斷開跺腳這樣被點擊按鈕:

this.stomp.disconnect(); 

做過什麼,應該引起控制檯消息「做的東西與RES」停止透進來,但不會斷開跺腳客戶端。

如果上述方法無效,請嘗試經歷所有stompclient訂閱和取消斷開stompClient

for (const sub in this.stomp.subscriptions) { 
    if (this.stomp.subscriptions.hasOwnProperty(sub)) { 
    this.stomp.unsubscribe(sub); 
    } 
} 

我一直在使用stompJs直接(不NG2-跺腳)之前,這一直爲我工作。

+0

不幸的是,我不能斷開連接,因爲我仍然有其他訂閱正在積極接收數據,我無法阻止這些數據。所有訂閱都使用相同的連接。我只想停止來自特定訂閱的數據。 – David