1

In meiner Spring Boot-Anwendung versuche ich eine Benachrichtigungsfunktion basierend auf WebSockets zu implementieren.Spring Boot WebSockets Benachrichtigungen

Ich habe folgende Konfiguration zur Verfügung gestellt:

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/notifications").withSockJS(); 
    } 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry registry) { 
     registry.enableSimpleBroker("/topic", "/queue"); 
    } 

} 

und versuchen SimpMessagingTemplate zu verwenden, um eine Nachricht von Server-Seite an einen bestimmten Client (Anwender) zu senden.

@Autowired 
private SimpMessagingTemplate simpMessagingTemplate; 

public void sendMessages() { 
    simpMessagingTemplate.convertAndSendToUser(%user%, "/horray", "Hello, World!"); 
} 

Im Moment verstehe ich nicht ein paar Dinge:

  1. Welchen Wert sollte für %user% Parameter von simpMessagingTemplate.convertAndSendToUser Methode verwendet werden?

  2. Was ist der Zusammenhang zwischen meinem /notifications Endpunkt in WebSocketConfig.registerStompEndpoints Methode registriert und destination Parameter von simpMessagingTemplate.convertAndSendToUser Methode und wie richtig es zu benutzen?

  3. Wie schützt man die Benutzer davor, die Nachrichten anderer Personen auf dem Client zu lesen?

Antwort

1

Der user Parameter ist der Name, den der Client verwenden, wenn er das Ziel abonniert hat, Spring Reference Chapter 26.4.11 User Destinations

Destination vs Endpoint sehen:

  • Endpoint ist die URL, wo die websocket/message brocker ist Hören
  • Ziel ist das Thema oder Thema in der Nachricht Brocker
+0

Danke. Wie können Benutzer davor geschützt werden, die Nachrichten anderer Personen auf dem Client zu lesen? Zum Beispiel kann ein Client denselben Namen verwenden wie ein anderer ... – alexanoid

+0

Dies ist trotzig eine neue Frage. – Ralph

+0

Ich glaube nicht. Es war in meiner ursprünglichen Frage. – alexanoid