在Spring Boot中,有两种常见的WebSocket实现方式:使用Spring的@EnableWebSocketMessageBroker
注解和使用WebSocketServletFactory
。
- 使用
@EnableWebSocketMessageBroker
注解
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.*;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
- 使用
WebSocketServletFactory
import org.eclipse.jetty.websocket.api.WebSocketServlet;
import org.eclipse.jetty.websocket.api.WebSocketServletFactory;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
public class WebSocketEndpoint extends WebSocketServlet {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(MyWebSocket.class);
}
}
在这个例子中,MyWebSocket
是一个继承自WebSocket
的类,用于处理WebSocket连接的打开、关闭和消息接收。
注意:第二种方式使用的是org.eclipse.jetty.websocket.api
包中的WebSocket API,这是Jetty项目提供的WebSocket实现。如果你使用的是Tomcat作为你的Servlet容器,那么你可能需要使用Spring的@EnableWebSocketMessageBroker
注解方式。