Как подписаться по websocket-ам на динамический список подписок в spring?

Задача заключается в следующем. Нужно реализовать api. Это api содержит два вида методов:
1) обычные (синхронные) методы, реализованные посредством REST-запросов, например
$.ajax({
    method:'GET',
    url: "localhost:8080/api/v1/some/resource",
    data: {
        param1: value1,
        param2: value2
    }
    success: function(data) {
        // do something...
    }
});

2) подписки на события, реализованные посредством websocket, например используя stomp:
var socket = new SockJS('/api/stomp');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    stompClient.subscribe('/api/v1/some/subscription', function(message){
        console.log(message);
    });
});

В серверном приложении используется Spring, соответственно использую стринговую реализацию Spring + WebSocket Api + Stomp.
Дело в том, что архитектура такая, что строго определенного списка таких подписок нет и не будет (потому что api предназначается для платформы, которая позволяет реализовывать различные прикладные задачи и ее модель генерируется динамически, соответственно список ресурсов тоже динамический).

Могу ли я как-то, используя Spring, сделать, чтобы при получении запроса на подписку, я в своем обработчике определял есть ли такая подписка, и только если подписка есть, подписывать клиента?
Так же для выполнения подписки от клиента могут понадобиться некоторые параметры. Как мне лучше передавать эти параметры? Прямо в строке '/api/v1/some/subscription?param1=value1&param2=value2', или используя хедеры stomp-сообщения?
  • Вопрос задан
  • 860 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы