【Websokect】服务器https协议下ws连接失败问题及解决办法 ...

打印 上一主题 下一主题

主题 567|帖子 567|积分 1701

在服务器利用HTTPS协议下连接WebSocket时,通常会出现一些常见的问题导致连接失败。以下是一些可能的原因息争决办法:

  • SSL证书配置问题: 确保您的服务器上已正确配置SSL证书,并且证书有效。如果证书配置不正确或者逾期,客户端可能无法建立安全连接。请检查服务器的SSL证书配置,并确保证书链完备、证书有效。
  • 未配置WebSocket容器支持TLS: WebSocket服务需要在HTTPS协议下运行时,需要WebSocket容器(如Tomcat、Jetty等)支持TLS。确保您的WebSocket容器已正确配置,以支持WebSocket over TLS(wss协议)。您可能需要在容器配置中启用TLS支持,并且将WebSocket协议升级到TLS。
  • 防火墙或网络配置问题: 某些防火墙或网络装备可能会阻止WebSocket连接,特殊是在利用非尺度端口时。确保您的网络配置允许WebSocket流量通过,并且端口没有被防火墙或其他安全装备所阻止。
  • 跨域资源共享(CORS)问题: 如果WebSocket服务与您的HTTPS网站位于差异的域名下,可能会碰到跨域问题。在服务器端配置符合的CORS规则以允许WebSocket连接跨域访问。
  • 客户端证书验证问题: 如果您的服务器配置了客户端证书验证,确保客户端证书已正确配置,并且客户端可以提供有效的证书以建立连接。
  • 日志调试: 在服务器和客户端启用具体的日志记载,以便排查连接失败的原因。查看服务器和客户端的日志文件,查找与WebSocket连接相干的错误或非常信息,以确定具体的问题。
问题场景:

前端地址:ws://127.0.0.1:19004/webSocket
当放在https协议下的情况下,ws会报非常
   DOMException: Failed to construct ‘WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
  解决办法:
1、把ws协议换成wss协议
2、nginx配置反向代理
  1.     location /websocket  {   
  2.     # 指向部署websocket的项目
  3.      proxy_pass http://127.0.0.1:19004/websocket;        
  4.      proxy_http_version 1.1;   
  5.      proxy_set_header Upgrade $http_upgrade;   
  6.      proxy_set_header Connection "Upgrade";   
  7.      proxy_set_header X-real-ip $remote_addr;
  8.      proxy_set_header X-Forwarded-For $remote_addr;
  9.      }
复制代码
3、最后前端访问地址:wss://example.com/websocket
4、测试连接成功!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表