Различные конечные точки websocket с одинаковыми сопоставлениями в Spring - PullRequest
0 голосов
/ 02 октября 2018

Я разрабатываю приложение Spring с веб-сокетами.Недавно я выполнил задачу поддержки нескольких конечных точек в моем приложении.Я регистрирую свои конечные точки, скажем:
registry.addEndpoint("/api/v1", "/api/v2")
И мне бы хотелось, чтобы у обеих конечных точек был метод с одинаковым подчиненным маршрутом, но разной реализацией.
Когда у меня есть одна конечная точка веб-сокета, я просто добавляю метод,помечены @MessageMapping("route") для моего контроллера покоя.Теперь я попытался создать 2 новых контроллера специально для методов websocket, я создал 2 java-класса и аннотировал их как @RequestMapping("/api/v1") и @RequestMapping("/api/v2") соответственно, создавая метод внутри каждого из них

@MessageMapping("route")
public void foo() {
    log.debug("foo %version% called"); // v1 or v2
}

Но в таком случаеSpring не запускает приложение, из-за неоднозначного отображения и выдает исключение при запуске.

Я также пытался получить доступ к полному маршруту внутри метода, но не могу найти способ сделать это (я попытался взглянуть на MessageHeaders).

Также в моем приложении есть реализация ApplicationListener:

WebSocketListener implements ApplicationListener<AbstractSubProtocolEvent>

для перехвата событий подписки Stomp и отключений, но здесь также нет полной информации о маршруте.

Итак, как я могу добиться такого поведения: разные методы для разных подчиненных маршрутов, но одинаковые сопоставления с топами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...