【问题标题】:Spring Boot WebSockets notificationsSpring Boot WebSockets 通知
【发布时间】:2016-10-30 10:00:52
【问题描述】:

在我的 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.registerStompEndpoints方法和 destination参数 simpMessagingTemplate.convertAndSendToUser方法以及如何正确使用?

  3. 如何防止用户在 客户?

【问题讨论】:

    标签: spring spring-boot websocket spring-websocket spring-messaging


    【解决方案1】:

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

    目的地与端点:

    • Endpoint 是 websocket/message broker 正在监听的 url
    • 目标是消息代理中的主题或主题

    【讨论】:

    • 谢谢。如何防止用户在客户端阅读其他人的消息?例如,某些客户端可以使用与另一个客户端相同的名称...
    • 这绝对是一个新问题。
    • 我不这么认为。这是我最初的问题。
    • 对不起,我忽略了 3 点 - 你读过 spring 安全文档了吗:docs.spring.io/spring-security/site/docs/current/reference/html/…
    猜你喜欢
    • 2016-10-07
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2016-05-19
    相关资源
    最近更新 更多