【发布时间】:2017-12-05 01:41:31
【问题描述】:
STOMP 规范规定 SUBSCRIBE 必须 具有 id 标头。
https://stomp.github.io/stomp-specification-1.2.html#SUBSCRIBE_id_Header
订阅 id 标头
由于单个连接可以有多个打开的订阅 服务器,必须在帧中包含一个 id 标头以唯一 识别订阅。 id 标头允许客户端和服务器 将后续的 MESSAGE 或 UNSUBSCRIBE 帧与原始帧相关联 订阅。在同一个连接中,不同的订阅必须 使用不同的订阅标识符。
但是,在 spring 的示例 https://spring.io/guides/gs/messaging-stomp-websocket/ 中,它在订阅目的地时没有指定 id。
function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
});
});
}
在 spring 的 API 中,SimpMessageSendingOperations.convertAndSendToUser 不明确支持 id 标头。
我的问题是在向客户端发送消息时如何指定 id 标头?
【问题讨论】: