首先,websocket的jar包引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
接着注入websocket的配置
/**
* websocket的配置
*
*/
@Configuration
@EnableWebSocket
public class WebsocketConfig implements WebSocketConfigurer{
private static final Logger logger = LoggerFactory.getLogger(WebsocketConfig.class);
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(orderProcessWebSocketHandler(), "/websocket/orders").addInterceptors(new WebSocketInterceptor()).setAllowedOrigins("*");
logger.info("register websocket success!!!");
}
@Bean("orderWebSocketHandler")
public WebSocketHandler orderProcessWebSocketHandler() {
return new OrderWebSocketHandler();
}
}
配置类里声明了websocket的处理类,并将其与url和拦截器绑定起来。
public class WebSocketInterceptor implements HandshakeInterceptor{
private static final String _WEBSOCKET_USER_IDENTIFICATION = "USER_IDENTIFICATION";
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
if (request instanceof ServletServerHttpRequest) {
ServletServerHttpRequest req = (ServletServerHttpRequest) request;
String id = req.getServletRequest().getHeader("shopId");
if (null == id) {
id = req.getServletRequest().getParameter("shopId");
}
if (null != id) {
attributes.put(_WEBSOCKET_USER_IDENTIFICATION, id);
return true;
}
}
return false;
}
@Override
public void a