Spring 启动 WebSockets 通知

Spring Boot WebSockets notifications

在我的 Spring 引导应用程序中,我正在尝试实现基于 WebSockets 的通知功能。

我提供了以下配置:

@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");
    }

}

并尝试使用 SimpMessagingTemplate 从服务器端向特定客户端(用户)发送消息。

@Autowired
private SimpMessagingTemplate simpMessagingTemplate;

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

现在我不明白一些事情:

  1. %user%参数应该使用什么值 simpMessagingTemplate.convertAndSendToUser 方法 ?

  2. 我的 /notifications 端点之间的相关性是什么 在 WebSocketConfig.registerStompEndpoints 方法中注册并且 destination 的参数 simpMessagingTemplate.convertAndSendToUser方法以及如何正确使用它?

  3. 如何防止用户看到其他人的消息 客户 ?

user参数是客户端订阅目的地时使用的名称,见Spring Reference Chapter 26.4.11 User Destinations

目的地与终点:

  • 端点是 url websocket/message 代理正在侦听的
  • 目标是消息代理中的主题或主题