如何从 Spring WebSocket STOMP 中的 UNSUBSCRIBE 框架获取订阅目的地

问题描述

我正在使用 Spring WebSocket STOMP。我需要从 SUBSCRIBE 框架中保存所有订阅目的地并在 UNSUBSCRIBE 框架中将其删除,但是如何从 UNSUBSCRIBE 框架中获取目的地?

解决方法

UNSUBSCRIBE 框架不包含目的地的名称。它只包含一个 id 标头,该标头必须与最初发送相应 SUBSCRIBE 帧的客户端提供的 id 标头匹配。 STOMP 代理实现本身会跟踪连接/ID/目的地关系。如果您想在客户端发送 UNSUBSCRIBE 帧时执行自己的逻辑,则需要自己跟踪。

,

最后,我修改了 SUBSCRIBE 帧中的默认 id 标头作为目标,如下所示

subscription=stompClient.subscribe('/destination',function(data){
        if (data.body) {
            console.log(data);
            $("#response").text(data.body);
        } else {
            alert("got empty message");
        }
                
            },{ id: '/destination' });

然后我从 UNSUBSCRIBE 帧获取 id