Wie sende ich eine Websocket-Nachricht vom Server nur an einen bestimmten Benutzer?
Meine Webapp hat Spring Security Setup und verwendet Websocket. Beim Versuch, eine Nachricht vom Server nur an einen bestimmten Benutzer zu senden, tritt ein schwieriges Problem auf .
Mein Verständnis vom Lesen des Handbuchs stammt von dem Server, den wir ausführen können
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
Und auf der Kundenseite:
stompClient.subscribe('/user/reply', handler);
Aber ich konnte den Abonnement-Rückruf niemals aufrufen. Ich habe viele verschiedene Wege ausprobiert, aber kein Glück.
Wenn ich es an / topic / reply sende, funktioniert es, aber alle anderen verbundenen Benutzer erhalten es auch.
Um das Problem zu veranschaulichen, habe ich dieses kleine Projekt auf Github erstellt: https://github.com/gerrytan/wsproblem
Schritte zum Reproduzieren:
1) Klonen und erstellen Sie das Projekt (stellen Sie sicher, dass Sie jdk 1.7 und maven 3.1 verwenden).
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Navigieren Sie zu http://localhost:8080
und melden Sie sich entweder mit Bob / Test oder Jim / Test an
3) Klicken Sie auf "Benutzerspezifische Nachricht anfordern". Erwartet: Eine Meldung "Hallo {Benutzername}" wird neben "Nur für mich empfangene Nachricht" nur für diesen Benutzer angezeigt. Tatsächlich: Es wird nichts empfangen