spring整合websocket
来源:互联网 发布:php招聘要求不靠谱 编辑:程序博客网 时间:2024/05/31 00:40
前提:SSM+maven
jsp
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";String wsPath = "ws://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><script src="sockjs.min.js"></script>$(document).ready(function() { //建立socket连接var sock;if ('WebSocket' in window) {sock = new WebSocket("<%=wsPath%>socketServer"); } else if ('MozWebSocket' in window) { sock = new MozWebSocket("<%=wsPath%>socketServer"); } else { sock = new SockJS("<%=basePath%>sockjs/socketServer"); }sock.onopen = function (e) {console.log(e); }; sock.onmessage = function (e) { console.log(e); //var bToObj=JSON.parse(e.data) alert(e.data) }; sock.onerror = function (e) { console.log(e); }; sock.onclose = function (e) { console.log(e); }});}
POM依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.0.1.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>4.0.1.RELEASE</version></dependency>
WebSocketInterceptor
import java.util.Map;import org.springframework.http.server.ServerHttpRequest;import org.springframework.http.server.ServerHttpResponse;import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.server.HandshakeInterceptor;public class WebSocketInterceptor implements HandshakeInterceptor{@Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,WebSocketHandler handler, Exception exception) {}@Overridepublic boolean beforeHandshake(ServerHttpRequest request,ServerHttpResponse response, WebSocketHandler handler,Map<String, Object> map) throws Exception {if(request instanceof ServerHttpRequest){}return true;}}
WebSocketConfig
import org.springframework.beans.factory.annotation.Autowired;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@EnableWebSocketpublic class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer{@Autowiredprivate BusSocketHandler busSocketHandler;@Autowiredprivate CountrySocketHandler countrySocketHandler;@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {//注册处理拦截器,拦截url为socketServer的请求registry.addHandler(busSocketHandler, "/socketServer").addInterceptors(new WebSocketInterceptor());//注册SockJs的处理拦截器,拦截url为/sockjs/socketServer的请求registry.addHandler(busSocketHandler, "/sockjs/socketServer").addInterceptors(new WebSocketInterceptor()).withSockJS();//注册处理拦截器,拦截url为socketServer的请求registry.addHandler(countrySocketHandler, "/countrySocketServer").addInterceptors(new WebSocketInterceptor());//注册SockJs的处理拦截器,拦截url为/sockjs/socketServer的请求registry.addHandler(countrySocketHandler, "/sockjs/countrySocketServer").addInterceptors(new WebSocketInterceptor()).withSockJS();}}
BusSocketHandler
import java.util.HashMap;import java.util.Map;import org.springframework.stereotype.Service;import org.springframework.web.socket.CloseStatus;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.WebSocketMessage;import org.springframework.web.socket.WebSocketSession;import com.alibaba.fastjson.JSONObject;@Servicepublic class BusSocketHandler implements WebSocketHandler{@Overridepublic void afterConnectionEstablished(WebSocketSession session)throws Exception {this.sendMessageToBus(session);}@Overridepublic void handleMessage(WebSocketSession arg0, WebSocketMessage<?> arg1)throws Exception {}@Overridepublic void handleTransportError(WebSocketSession session, Throwable error)throws Exception {if(session.isOpen()){session.close();}}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus arg1)throws Exception {}@Overridepublic boolean supportsPartialMessages() {return false;}public void sendMessageToBus(WebSocketSession session) throws Exception {if (session.isOpen()) {Map<String, String> map = new HashMap<String,String>();int i = 1;while (session.isOpen()) {String a = "a====="+i;map.put("a", a);String jsonString = JSONObject.toJSONString(map);try {session.sendMessage(new TextMessage(jsonString));} catch (Exception e) {break;}Thread.sleep(1000);i++;}}}}
阅读全文
0 0
- spring整合webSocket
- websocket与Spring整合
- spring+websocket整合使用
- Spring整合Websocket
- spring之整合websocket
- Spring容器整合WebSocket
- spring-boot整合websocket
- spring websocket整合示例
- Spring boot 整合websocket
- spring整合websocket
- Spring整合Websocket
- spring+websocket整合
- Spring与WebSocket的整合
- Spring+WebSocket整合(SSM)
- JFinal整合spring的websocket
- 认识HTML5的WebSocket以及spring+websocket整合
- springMVC+spring+MyBatis+websocket技术整合
- Spring Boot WebSocket整合及nginx配置
- 【简单题】泥塑课
- 初来乍到
- 日期函数大全
- java内部类的作用
- POJ 1276
- spring整合websocket
- 21分钟 MySQL 入门教程
- 命名空间无法重复使用
- HDUOJ 2222 Keywords Search
- duilib 入门五之UIManger
- angular2学习笔记
- CSS+DIV命名规则(转载)
- Android 7.0Settings加载主界面流程
- FSMC+SRAM+IS62WV51216