Spring 封装
pom.xml
<!-- websocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>HttpAuthInterceptor
package com.example.websocket;
import cn.hutool.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
import java.nio.charset.StandardCharsets;
import java.util.Map;
@Component
@Slf4j
public class HttpAuthInterceptor implements HandshakeInterceptor {
/**
* 握手前
*
* @param request 请求
* @param response 响应
* @param wsHandler WebSocket处理器
* @param attributes 用于传递信息的map,此处用于给session中放入用户信息
* @return 是否通过
*/
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {
// 获得请求参数
Map<String, String> paramMap = HttpUtil.decodeParamMap(request.getURI().getQuery(), StandardCharsets.UTF_8);
if (paramMap.containsKey("token")) {
// 放入属性域
attributes.put("token", paramMap.get("token"));
log.info("用户握手成功");
return true;
}
return false;
}
/**
* 握手后
*
* @param request 请求
* @param response 响应
* @param wsHandler WebSocket处理器
* @param exception 异常
*/
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
System.out.println("握手结束");
}
}Websocket
WebsocketConfig
最后更新于