Как отправить сообщение веб-сокета с сервера только определенному пользователю?
Мое веб-приложение имеет настройку безопасности Spring и использует веб-сокет. У меня возникла сложная проблема при попытке отправить сообщение с сервера только конкретному пользователю.
Насколько я понимаю, прочитав руководство это с сервера, который мы можем сделать
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}" отображается рядом с "Received Message To Me Only" только для этого пользователя, Фактически: ничего не получено
simpMessagingTemplate.convertAndSendToUser(principal.getName(), "/user/reply", reply);, и когда сообщение отправляется с сервера, он выдает это исключениеjava.lang.IllegalArgumentException: Expected destination pattern "/principal/{userId}/**"- person gerrytan   schedule 13.03.2014convertAndSendToUser(principal.getName(), "/reply", reply);- person Tip-Sy   schedule 15.10.2014