我有一个 Spring Boot 应用程序,它将发布到用户定义的目标通道,如下所示:
@Autowired
private SimpMessagingTemplate template;
public void send() {
//..
String uniqueId = "123";
this.template.convertAndSendToUser(uniqueId, "/event", "Hello");
}
然后 Stomp over SockJS 客户端可以订阅它并接收消息。假设我在我的 spring 应用程序中注册了一个名为“/data”的 stomp 端点
var ws = new SockJS("/data");
var client = Stomp.over(ws);
var connect_fallback = function() {
client.subscribe("/user/123/event", sub_callback);
};
var sub_callback = function(msg) {
alert(msg);
};
client.connect('','', connect_callback);
实际上会有不止一个用户客户端订阅同一个不同的用户目的地,所以每个发布/订阅通道不是一对一的,我只是这样做,因为 spring 的“/topic”概念必须以编程方式定义,并且“/queues”只能由一个用户使用。我如何知道用户目的地何时不再有任何订阅者?以及如何删除用户目的地?