Wie Websocket Nachricht vom Server an bestimmte Benutzer senden?Senden einer Nachricht an bestimmte Benutzer auf Spring Websocket
Meine Webapp hat Feder Sicherheitseinstellungen und verwendet Websocket. Ich habe ein schwieriges Problem beim Versuch, eine Nachricht vom Server an spezifischen Benutzer nur zu senden.
aus Mein Verständnis the manual Lesen ist vom Server wir
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
Und auf der Client-Seite tun können:
stompClient.subscribe('/user/reply', handler);
Aber ich konnte nie das Abonnement Rückruf aufgerufen erhalten. Ich habe viele verschiedene Wege ausprobiert, aber kein Glück.
Wenn ich es an senden/Thema/Antwort es funktioniert, aber alle anderen verbundenen Benutzer erhalten es auch.
das Problem zu veranschaulichen, habe ich dieses kleine Projekt auf Github erstellt: https://github.com/gerrytan/wsproblem
Schritte zum Reproduzieren:
1) Clone und erstellen Sie das Projekt (stellen Sie sicher, dass Sie mit jdk 1.7 und maven 3,1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Navigieren Sie zu http://localhost:8080
, Login entweder bob/Test oder jim/test
3) Klicken Sie auf "Benutzerspezifische Nachricht anfordern". Erwartet: eine Meldung "Hallo {Benutzername}" wird nur für diesen Benutzer neben "Empfangene Nachricht an mich" angezeigt. Aktuell: nichts ist erhalten
Haben Sie bei convertAndSendToUser (String Benutzer, String Ziel, T-Nachricht) gesucht? http://docs.spring.io/spring/docs/4.0.0.M3/javadoc-api/org/Frühling Framework/messaging/simp/SimpMessagingTemplate.html # convertAndSendToUser% 28java.lang.String,% 20java.lang.String,% 20T% 29 –
Ja versucht, aber auch kein Glück – gerrytan
Ich habe an privaten Projekt gearbeitet und das ist die Methode, die wir verwenden und es funktioniert für uns. Ich denke, dass ein mögliches Problem sein könnte, dass Sie "/ user/reply" abonnieren und Sie Nachrichten an "/ user/{username}/reply" senden. Ich denke, dass Sie den {username} Teil entfernen und den convertAndSendToUser (String Benutzer, String Ziel, T Nachricht) verwenden sollten. –