当WebSocket请求获取请求头Sec-WebSocket-Protocol不为空时,需要返回给前端相同的响应,所以就需要处理
解决:在 WebSocketConfig 中新增 modifyHandshake方法,用来获取请求头和为返回响应赋值
modifyHandshake方法文章来源:https://www.toymoban.com/news/detail-616653.html
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
//获取请求头
request.getHeaders().get("Sec-WebSocket-Protocol").get(0);
//当Sec-WebSocket-Protocol请求头不为空时,需要返回给前端相同的响应
response.getHeaders().put("Sec-WebSocket-Protocol",list);
/**
*获取请求头后的逻辑处理
*/
super.modifyHandshake(sec, request, response);
}
关键点:需要在websocketserver的@ServerEndpoint注解中加上configurator = WebSocketConfig.class,也就是上面那个方法存在的配置文件中文章来源地址https://www.toymoban.com/news/detail-616653.html
@Component
@ServerEndpoint(value ="/webSocket/{userId}",encoders = { ServerEncoder.class },configurator = WebSocketConfig.class)
public class WebSocketServer {
/**
* 连接开始调用的方法
*/
@OnOpen
public void onOpen(Session session) throws Exception {}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose(@PathParam(value = "userId") Integer userId,Session session) {}
}
到了这里,关于WebSocket请求获取请求头Sec-WebSocket-Protocol,以及正确返回响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!