上网看了很多方式,最后觉得这种方式比较简单易懂,这边主要有三个类(包括注解的配置文件)就可以实现后台内容
文末会展示结果实例,如果是你所需要的效果,直接拿去用吧~项目中复制直接用
本文根据网上整理并修改!!!
本文思路来自:链接
现在开始。开始前请确保pom已经引入需要的包
首先是配置文件类(注解)
/**
* Spring WebSocket的配置,这里采用的是注解的方式
*/
@Configuration
@EnableWebMvc//这个标注可以不加,如果有加,要extends WebMvcConfigurerAdapter
@EnableWebSocket
public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
//1.注册WebSocket
String websocket_url = "/websocket/socketServer"; //设置websocket的地址
registry.addHandler(webSocketHandler(), websocket_url). //注册Handler
addInterceptors(new WebSocketHandshakeInterceptor()); //注册Interceptor
//2.注册SockJS,提供SockJS支持(主要是兼容ie8)
String sockjs_url = "/sockjs/socketServer"; //设置sockjs的地址
registry.addHandler(webSocketHandler(), sockjs_url). //注册Handler
addInterceptors(new WebSocketHandshakeInterceptor()). //注册Interceptor
withSockJS(); //支持sockjs协议
}
@Bean
public TextWebSocketHandler webSocketHandler() {
return new WebSocketHandler();
}
}
然后是连接拦截器类,主要是拦截连接并且设置用户session标识作用,这样在最后一个处理请求类可以分清是哪个已连接用户发出的请求~,
/**
* WebSocket握手拦截器
*/
public class WebSocketHandshakeInterceptor implements HandshakeInterceptor {
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> attributes) throws Exception {
if (request instanceof ServletServerHttpRequest) {