package com.matrix.core.interceptor;
|
|
import com.matrix.core.tools.LogUtil;
|
import org.springframework.http.server.ServerHttpRequest;
|
import org.springframework.http.server.ServerHttpResponse;
|
import org.springframework.http.server.ServletServerHttpRequest;
|
import org.springframework.web.socket.WebSocketHandler;
|
import org.springframework.web.socket.server.HandshakeInterceptor;
|
|
import java.util.Map;
|
|
/**
|
*
|
* @ClassName: MyWebSocketInterceptor
|
* @Description: 创建握手 此类用来获取登录用户信息并交由websocket管理
|
* @author jyy
|
* @date 2017年9月26日 上午10:31:30
|
*/
|
|
/**
|
* HandshakeInterceptor WebSocket握手请求的拦截器. 检查握手请求和响应, 对WebSocketHandler传递属性
|
*/
|
public class WebSocketInterceptor implements HandshakeInterceptor {
|
|
|
|
/**
|
* 在握手之前执行该方法, 继续握手返回true, 中断握手返回false. 通过attributes参数设置WebSocketSession的属性
|
*/
|
@Override
|
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
|
Map<String, Object> attributes) throws Exception {
|
if (request instanceof ServletServerHttpRequest) {
|
String userId = ((ServletServerHttpRequest) request).getServletRequest().getParameter("userId");
|
attributes.put("userId", userId);
|
LogUtil.info("用户建立连接:userId=" + userId);
|
}
|
|
return true;
|
}
|
|
/**
|
* 在握手之后执行该方法. 无论是否握手成功都指明了响应状态码和相应头.
|
*/
|
@Override
|
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
|
Exception exception) {
|
|
}
|
|
}
|