1

在我的 Spring Boot 应用程序中,我试图实现基于 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.registerStompEndpointsdestinationsimpMessagingTemplate.convertAndSendToUser

  3. 如何防止用户在客户端阅读其他人的消息?

4

1 回答 1

1

user参数是客户端订阅目的地时使用的名称,见Spring参考章节26.4.11用户目的地

目的地与端点:

  • Endpoint 是 websocket/message broker 正在监听的 url
  • 目的地是消息代理中的主题或主题
于 2016-10-30T10:14:01.297 回答