在使用Spring Boot的Websockets时,我看到一些示例使用:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/greeting");;
}
}
在控制器中使用 @MessageMapping 注释,并指定 config.setApplicationDestinationPrefixes("/app") 。
我还看到过一些只使用 enableSimpleBroker() 的示例,并在控制器中使用 @SubscribeMapping。
据我所了解,@MessageMapping 负责将接收到的消息路由到正确的方法。具有此注释的方法仅在目标包含在 setApplicationDestinationPrefixes 中声明的前缀之一时才会触发。
但是,@SubscribeMapping 也会将消息路由到正确的方法,而我们不需要在配置类中调用 setApplicationDestinationPrefixes()。
它们的区别是什么?