Я использую grails/groovy, поэтому извините за странный синтаксис, я также новичок в использовании веб-сокетов, поэтому, пожалуйста, дайте мне знать, если я делаю это неправильно:
Используя весенние веб-сокеты, я могу отправлять сообщения определенным подписанным пользователям через
SimpMessagingTemplate brokerMessagingTemplate
users.each {
brokerMessagingTemplate.convertAndSendToUser(it.id,"/topic/path",data)
}
Однако я хочу отправлять сообщения только подписавшимся пользователям, которые передали на сервер определенное значение/идентификатор сверх своего идентификатора пользователя. Соединение инициализируется при загрузке веб-страницы, поэтому я подумал, что, возможно, я мог бы добавить значение заголовка STOMP, которое передает эту информацию на сервер, и сервер отправляет сообщения только тем соединениям, которые соответствуют этому.
var socket = new SockJS("/url/stomp");
var client = Stomp.over(socket);
var headers = {'additionalId': additionalId};
client.connect({}, function() {
client.subscribe("/user/topic/path", function (data) {
}, headers);
во-первых, я не знаю, является ли добавление значения заголовка правильным способом сделать это, а во-вторых, я не уверен, как заставить шаблон SimpMessagingTemplate отправляться тем, кто специально предоставил дополнительный идентификатор в заголовке.