Java中Spring WebSocket详解

  

首先pom.xml         & lt; parent>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-parent   & lt; version> 1.5.8.RELEASE   & lt;/parent>   & lt; dependency>   & lt; groupId> org.apache.commons   & lt; artifactId> commons-io   & lt;/dependency>   & lt; dependency>   & lt; groupId> javax.websocket   & lt; artifactId> javax.websocket-api   & lt; version> 1.0 & lt;/version>   & lt; scope> provided   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework   & lt; artifactId> spring-websocket   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt; exclusions>   & lt; exclusion>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-tomcat   & lt;/exclusion>   & lt;/exclusions>   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-undertow   & lt;/dependency>      

接收消息后的处理类GameHandler:

        进口java.net.URI;   进口org.springframework.web.socket.BinaryMessage;   进口org.springframework.web.socket.CloseStatus;   进口org.springframework.web.socket.PongMessage;   进口org.springframework.web.socket.TextMessage;   进口org.springframework.web.socket.WebSocketSession;   进口org.springframework.web.socket.handler.AbstractWebSocketHandler;      公开课GameHandler延伸AbstractWebSocketHandler {/* *   *处理字符串类的信息   *   * @param会话   * @param消息   * @throws例外   */@Override   保护无效handleTextMessage (WebSocketSession会话,TextMessage消息){抛出异常   会话。sendMessage(新TextMessage (message.asBytes ()));   }/* *   *处理二进制类的信息   *   * @param会话   * @param消息   * @throws例外   */@Override   保护无效handleBinaryMessage (WebSocketSession会话,BinaryMessage消息){抛出异常   会话。sendMessage(新BinaryMessage (message.getPayload ()));   }/* *   *乒乓球   *   * @param会话   * @param消息   * @throws例外   */@Override   保护无效handlePongMessage (WebSocketSession会话,PongMessage消息){抛出异常      }/* *   *传出错误的处理   *   * @param会话   * @param例外   * @throws例外   */@Override   公共空间handleTransportError (WebSocketSession会话,Throwable异常)抛出异常{   }/* *   *连接关闭的处理   *   * @param会话   * @param状态   * @throws例外   */@Override   公共空间afterConnectionClosed (WebSocketSession会话,CloseStatus状态){抛出异常   }/* *   *连接建立后的处理   *   * @param会话   * @throws例外   */@Override   公共空间afterConnectionEstablished (WebSocketSession会话){抛出异常   }   }      

,握手信息拦截器WebSocketHandshakeInterceptor:

        进口java.util.Map;   进口javax.servlet.http.Cookie;   进口org.springframework.http.server.ServerHttpRequest;   进口org.springframework.http.server.ServerHttpResponse;   进口org.springframework.http.server.ServletServerHttpRequest;   进口org.springframework.web.socket.WebSocketHandler;   进口org.springframework.web.socket.server.HandshakeInterceptor;      公共类WebSocketHandshakeInterceptor实现HandshakeInterceptor {   @Override   公共布尔beforeHandshake (ServerHttpRequest请求,ServerHttpResponse shr1, WebSocketHandler wsh, Map<字符串,Object>{属性)抛出异常//此处可以做一些权限认证的事情或者其他   返回true;   }   @Override   公共空afterHandshake (ServerHttpRequest萎缩,ServerHttpResponse shr1, WebSocketHandler wsh,异常excptn) {   }   }      

使用WebSocket的配置类WebSocketConfig:

        进口org.springframework.context.annotation.Bean;   进口org.springframework.context.annotation.Configuration;   进口org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;   进口org.springframework.web.socket.config.annotation.EnableWebSocket;   进口org.springframework.web.socket.config.annotation.WebSocketConfigurer;   进口org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;      @ configuration   @EnableWebSocket   公共类WebSocketConfig WebMvcConfigurerAdapter延伸实现WebSocketConfigurer {   @Override   公共空间registerWebSocketHandlers (WebSocketHandlerRegistry注册表){//允许连接的域,只能以http或https开的头   String [] allowsOrigins={" http://127.0.0.1:1213 ", " http://localhost: 1213 "};   registry.addHandler (gameHandler()/游戏).addInterceptors (handshakeInterceptor ()) .setAllowedOrigins (allowsOrigins);   }   @ bean   公共GameHandler GameHandler () {   返回新GameHandler ();   }   @ bean   公共WebSocketHandshakeInterceptor handshakeInterceptor () {   返回新WebSocketHandshakeInterceptor ();   }   }

Java中Spring WebSocket详解