Вернуть несколько объектов в STOMP Подписаться Spring Websockets - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть тема /topic/routes/{routeid}

Пользователи подписываются на эту тему и получают текущее местоположение шины на этом маршруте, используя следующий метод контроллера:

@SubscribeMapping(TOPIC + "/routes/{routeId}")
    public MessageWrapper<BusStatusResponseModel> subscribeToRouteLocation(
            @DestinationVariable(value = "routeId") short routeId) {

            return new MessageWrapper<>(LOCATION_MESSAGE, routeService.getBusForRoute(routeId));

    }

Однако я хотел бы попытаться переместить инициализацию моего приложения в веб-сокеты вместо REST, поэтому при подписке я хотел бы вернуть несколько отдельных сообщений. Например, остановки на маршруте, предыдущие записи с этого маршрута и т. Д.

Я попытался сделать метод контроллера подписки возвращаемым недействительным, и вместо этого использовал SimpMessagingTemplate примерно так:

@SubscribeMapping(TOPIC + "/routes/{routeId}")
public void subscribeToRouteLocation(@DestinationVariable(value = "routeId") short routeId, Principal principal) {
    messagingTemplate.convertAndSendToUser(
                    user.getName(),
                    ROUTES,
                    new MessageWrapper<>(LOCATION_MESSAGE,
                    routeService.getBusForRoute(routeId))
            );
    final LocalDate localDate = dateService.tenantTime().toLocalDate();
    messagingTemplate.convertAndSendToUser(
            user.getName(),
            ROUTES,
            new MessageWrapper<>(
                    MessageWrapper.ROUTE_ACTIVITY_SUBSCRIPTION_MESSAGE,
                    activityService.getAllRouteReportsForRouteInDateRange(routeId, localDate.minusDays(7), localDate))
            );
}

Однако, это отправляет в / user / ..., что не то, что я хочу.

Возможно ли то, что я спрашиваю?

...