MST

星途 面试题库

面试题:网络编程之Spring WebSocket中等难度题

在Spring WebSocket中,如何配置STOMP协议的消息代理?请描述关键的配置步骤和相关的主要类。
14.4万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

关键配置步骤

  1. 添加依赖:在pom.xml(如果使用Maven)中添加Spring WebSocket和Spring Messaging相关依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-messaging</artifactId>
</dependency>
  1. 配置WebSocket:创建一个配置类,继承AbstractWebSocketMessageBrokerConfigurer 或实现WebSocketMessageBrokerConfigurer接口。
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

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

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/websocket-endpoint").withSockJS();
    }
}
  • 配置消息代理:在configureMessageBroker方法中,通过config.setApplicationDestinationPrefixes("/app")设置应用程序目的地前缀,客户端发送到带有该前缀的目的地的消息将被路由到@MessageMapping注解的方法。通过config.enableSimpleBroker("/topic", "/queue")启用简单的消息代理,指定代理的目的地前缀,应用程序可以向这些前缀开头的目的地发送消息。
  • 注册STOMP端点:在registerStompEndpoints方法中,通过registry.addEndpoint("/websocket-endpoint").withSockJS();注册一个STOMP端点,withSockJS()方法用于启用SockJS后备选项,以支持不支持WebSocket的浏览器。

相关主要类

  1. AbstractWebSocketMessageBrokerConfigurer:一个抽象类,实现了WebSocketMessageBrokerConfigurer接口,提供了一些默认实现,方便子类继承来进行WebSocket和STOMP配置。
  2. WebSocketMessageBrokerConfigurer:接口,定义了配置WebSocket消息代理的方法,包括配置消息代理和注册STOMP端点等。
  3. MessageBrokerRegistry:用于配置消息代理的注册类,在configureMessageBroker方法中使用,设置应用程序目的地前缀、启用代理等。
  4. StompEndpointRegistry:用于注册STOMP端点的注册类,在registerStompEndpoints方法中使用,添加STOMP端点并配置相关选项。
  5. @EnableWebSocketMessageBroker:启用WebSocket消息代理的注解,添加到配置类上,开启WebSocket消息代理功能。