Como enviar mensagem de websocket do servidor apenas para um usuário específico?
Meu webapp tem configuração de segurança Spring e usa websocket. Estou encontrando um problema complicado ao tentar enviar mensagem do servidor apenas para um usuário específico .
Meu entendimento ao ler o manual é do servidor que podemos fazer
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
E do lado do cliente:
stompClient.subscribe('/user/reply', handler);
Mas eu nunca poderia obter o retorno de chamada da assinatura. Eu tentei muitos caminhos diferentes, mas sem sorte.
Se eu enviar para / topic / reply, ele funciona, mas todos os outros usuários conectados também o receberão.
Para ilustrar o problema, criei este pequeno projeto no github: https://github.com/gerrytan/wsproblem
Passos para reproduzir:
1) Clone e construa o projeto (certifique-se de usar o jdk 1.7 e o maven 3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Acesse http://localhost:8080
, faça login usando bob / test ou jim / test
3) Clique em "Solicitar mensagem específica do usuário". Esperado: uma mensagem "olá {nome de usuário}" é exibida ao lado de "Mensagem recebida apenas para mim" apenas para este usuário. Real: nada foi recebido