Spring websocket环境配置及简单示例
1,准备好相关依赖包,spring核心包以及spring-websocket-4.3.6release.jar, javax.websocket-api-1.0.jar。导入项目。
2,新建一个WebSocketConfig.java放在mvc自动扫描的Controller中,详细代码如下:
import org.springframework.context.annotation.Bean;
import com.database.websocket.*;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@EnableWebMvc
@EnableWebSocket
public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
//允许连接的域,只能以http或https开头
// String[] allowsOrigins = {"http://www.xxx.com"};
String[] allowsOrigins ={
"*"};
//WebIM WebSocket通道
registry.addHandler(chatWebSocketHandler(),"/webSocketIMServer").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor());
registry.addHandler(chatWebSocketHandler(),"/sockjs/webSocketIMServer").setAllowedOrigins(allowsOrigins).addInterceptors(myInterceptor()).withSockJS();
}
@Bean
public ChatWebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
@Bean
public WebSocketHandshakeInterceptor myInterceptor(){
return new WebSocketHandshakeInterceptor();
}
}
3,新建一个websocket的包,新建一个WebSocketHandshakeInterceptor.java文件作为握手拦截器,WebSocket握手拦截器用来拦截和处理客户端和服务器端分别在握手前和握手后的事件,我们这里添加这个拦截器是为了清晰的知道什么时候以及是否握手成功。详细代码如下: