Jak wysłać wiadomość WebSocket z serwera tylko do określonego użytkownika?
Moja aplikacja internetowa ma ustawienia zabezpieczeń sprężynowych i korzysta z gniazda sieciowego. Mam trudny problem podczas próby wysłania wiadomości z serwera tylko do określonego użytkownika .
Moje zrozumienie z przeczytania instrukcji pochodzi z serwera, który możemy zrobić
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
A po stronie klienta:
stompClient.subscribe('/user/reply', handler);
Ale nigdy nie mogłem wywołać wywołania zwrotnego subskrypcji. Próbowałem wielu różnych ścieżek, ale bez powodzenia.
Jeśli wyślę to na / topic / odpowiedz, to działa, ale wszyscy inni podłączeni użytkownicy też to otrzymają.
Aby zilustrować problem, stworzyłem ten mały projekt na github: https://github.com/gerrytan/wsproblem
Kroki ku reprodukcji:
1) Sklonuj i skompiluj projekt (upewnij się, że używasz jdk 1.7 i maven 3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Przejdź do http://localhost:8080
, zaloguj się za pomocą bob / test lub jim / test
3) Kliknij „Poproś o wiad. Użytkownika”. Oczekiwano: wiadomość „cześć {nazwa użytkownika}” jest wyświetlana obok pozycji „Tylko otrzymana wiadomość do mnie” tylko dla tego użytkownika. Rzeczywiste: nic nie zostało odebrane