Как отправить сообщение websocket с сервера только на конкретный пользователь?
У моего webapp есть spring настройка безопасности и используется websocket. Я сталкиваюсь с сложной проблемой, пытаясь отправить сообщение с сервера на только для конкретного пользователя.
Мое понимание от чтения руководства от сервера, который мы можем сделать
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
И на стороне клиента:
stompClient.subscribe('/user/reply', handler);
Но я никогда не смог вызвать обратный вызов подписки. Я пробовал много разных путей, но не повезло.
Если я отправлю его в /topic/reply, он будет работать, но все остальные подключенные пользователи тоже получат его.
Чтобы проиллюстрировать проблему, я создал этот небольшой проект в github: https://github.com/gerrytan/wsproblem
Шаги для воспроизведения:
1) Клонировать и построить проект (убедитесь, что вы используете jdk 1.7 и maven 3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Перейдите к http://localhost:8080
, войдите с помощью bob/test или jim/test
3) Нажмите "Запросить определенные пользователем сообщения". Ожидается: сообщение "hello {username}" отображается рядом с "Только полученное сообщение только для меня", Actual: ничего не получено