Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol’ header but no response was received

一、分析
二、初步解决
三、最终解决

分析

和前端同事调试WebSocket接口,一次性通过,作为一个老码农很是欣慰。

第二天另外一个前端同事拉取代码,跑项目。啊,怎么WebSokcet连不上,一堆报错。

我看了后台在连接后立马报错,然后又断开连接。丈二和尚摸不着头脑。

通过在线网站多次测试WebSocket连接,没复现,这不是没问题嘛。

网站地址: http://websocket.jsonin.com/

通过我4年开发,6年工作经验来看,一定是前端的问题,一定是别人的问题,与我无关。继续搬砖…

又过了一会,看着后台无休止的报错,烦死了,让我来终结这一切吧。

前端同事发来的错误信息:Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol’ header but no response was received

WebSocket握手时出错:发送了非空的’Sec-WebSocket-Protocol’报头,但没有收到响应。

原来小丑是我自己,真是后端的问题,没有给前端响应头。

分析原因:应该是前端传了非空的’Sec-WebSocket-Protocol’请求头,后端没有给响应,火狐可以是因为火狐没有传,谷歌又传了这个值,害,真麻烦。

初步解决

知道问题了那就先解决,首先想到的是给HttpServletReponse返回请求头Sec-WebSocket-Protocol的数据。有一说一,开干。


问题又来了,我从哪里获取HttpServletReponse呢,索性给加了两个参数,启动报错,人家不识别。。。

看了一下这个注解,有个配置参数,就你了。写个配置类,在返回的头上加上参数。


配置类如下:

最终解决

完事,问了下报错的前端同事可以了不,不出所料,确实可以了。OK,继续干活了。

回头发现控制台又报错,并且通过网站测试WebSokcet也连不上了。。。完蛋,治好了咽炎,鼻炎又犯了。

谷歌浏览器是可以了,但是火狐浏览器连接不到,那问题就明朗了,火狐没有传Sec-WebSocket-Protocol,而谷歌浏览器传这个值了。加个判断最终解决。

package com.system.graphical.common.websocket;import org.springframework.stereotype.Component;import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import java.util.List;@Component
public class WebSocketConfig extends ServerEndpointConfig.Configurator {@Overridepublic void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {List<String> list = request.getHeaders().get("Sec-WebSocket-Protocol");if (list != null && list.size() > 0) {response.getHeaders().put("Sec-WebSocket-Protocol", list);super.modifyHandshake(sec, request, response);}}
}
我是失忆,一个热爱技术的宅男,文章有任何问题您都可以在留言中指出。欢迎留言。也可以加我个人微信一起学习,一起进步!

Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol‘ header but no response was相关推荐

  1. WebSocket——[Error during WebSocket handshake: Unexpected response code: 403]解决方案

    问题描述 WebSocket connection to 'ws://localhost:8888/MetroCity/ws/endpointChat' failed: Error during We ...

  2. WebSocket——[Error during WebSocket handshake: Unexpected response code: 200]解决方案

    问题描述 WebSocket connection to 'ws://localhost:8888/MetroCity/ws/endpointChat' failed: Error during We ...

  3. 【uniapp】Error during WebSocket handshake: Unexpected response code: 302

    前言 使用uniapp创建WebSocket时发生错误:Error during WebSocket handshake: Unexpected response code: 302 分析 报302的 ...

  4. SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400

    SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400 问题出现在nginx的配置文件,需要 ...

  5. WebSocket connection to,Error during WebSocket handshake: Unexpected response code: 404

    使用标准的JSR 356注解时,需要使用tomcat 8.x版本,如果使用tomcat 7.x的版本,则需要继承WebSocketServlet,否则会报WebSocket connection to ...

  6. WebSocket connection to ‘ws://XXX‘ failed: Error during WebSocket handshake报错

    最近做前后端通信.后端实时推送数据给前端.报错WebSocket connection to 'ws://localhost:8086/websocket/message' failed: Error ...

  7. WebSocket报错:Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but

    Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was ...

  8. Error during WebSocket handshake: Unexpected response code: 404错误的解决

    作者:朱金灿 来源:https://blog.csdn.net/clever101 本文操作环境是:64位Windows 10,eclipse Oxygen.2 Release (4.7.2). 在使 ...

  9. netty : websocketx.WebSocketHandshakeException: not a WebSocket handshake request: missing upgrade

    文章目录 1.背景 1.背景 netty聊天室程序 刚刚启动项目,然后刷线页面.后台报错. io.netty.handler.codec.http.websocketx.WebSocketHandsh ...

  10. websocket handshake unexpected response code 404问题

    Html页面websocket客户端出现websocket handshake unexpected response code 404问题,一般是地址错误.在new WebSocket()里需要带上 ...

最新文章

  1. 利用Bandwidth Splitter限制带宽
  2. c+和python哪个快-C/C++比python快是什么意思?
  3. VC下设置Excel单元格的边框
  4. Web Service/WCF 部署注意事项。
  5. Leetcode 133.克隆图
  6. vue-cli中的babel配置文件.babelrc详解
  7. Allegro16.6导出位号图
  8. 网络浏览器大战(Google与IE的较量)
  9. 我很喜欢电影背后这个看上去很精神分裂的故事,跟影片中那个盘根错节的故事相得益彰。好的艺术作品永远都不可能被简化成纬度单一的说教。
  10. JDBC在jsp中的使用
  11. 中文汉字和英文数字的unicode编码范围
  12. 外链建设的22种方法
  13. 广州大学机器学习与数据挖掘实验三
  14. Java实现多个图片转化成PDF
  15. 小分子php蛋白,小分子-蛋白相互作用关系——简单的docking介绍
  16. 语音标注必须了解的基础知识点
  17. JavaScript的DOM知识点总结
  18. 计算机应用研究、计算机工程与应用、计算机科学与探索投稿经验
  19. 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
  20. 智能计算:人工神经网络(ANN)

热门文章

  1. 《无敌大冒险》技术支持
  2. 破解版editPlus
  3. centos7刷新dns
  4. setup factory 会话变量
  5. 分享一些学习和获取资料的网站
  6. SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
  7. WIN10_cmd命令提示符更换用户启动
  8. Redis 官方可视化工具,高颜值,功能太强大!
  9. 上古卷轴5无法启动 因为计算机丢失,《上古卷轴5:天际》无法启动nmm解决方法...
  10. 测试ai模糊软件,“马赛克”视频能被AI软件彻底还原?测试结果出乎意料!