ng2 stomp 客户端取消订阅()不起作用

Dav*_*vid 2 stomp angular

我正在使用 ng2-stomp-service 订阅一个套接字:

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

这非常适合接收数据。但是在某些时候(单击按钮时)我想停止接收数据。其他订阅仍在使用该连接,因此我只想取消订阅此特定订阅。单击按钮时发生这种情况:

unsubscribeFoo() {
    this.fooSubscription.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然清楚地从该订阅中获取数据,因为它是从服务器发送的。

当我取消订阅时,我在浏览器控制台中从 stomp 的调试输出中看到了这一点,看起来很有希望:

>>> UNSUBSCRIBE
id:sub-3
Run Code Online (Sandbox Code Playgroud)

但是,很遗憾,我仍然在片刻之后获得数据。

小智 5

我知道这是一个老问题,但对于任何偶然发现的人来说,取消订阅功能引用主题的 id,而不是实际主题。

您可以在订阅功能中设置 id:

client.subscribe(topic, messageHandler, { id: “myTopicId”});
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样调用取消订阅:

client.unsubscribe(“myTopicId”);
Run Code Online (Sandbox Code Playgroud)