2017-09-14 84 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