收藏
回答

微信小程序在H5端和模拟器上连接websocket都正常,但是同样的代码在真机上报错,怎么解决?

微信小程序在H5端和模拟器上连接websocket都正常,但是同样的代码在真机上连接websocket报错 {"errCode": 1004, "errMsg": "open fail: _code:20,_msg:Invalid HTTP status."},怎么解决?

请求:wss://www.xxxx.com/test/chat/9900369423433728

域名已备案,证书已配置,443端口防火墙已开放

最后一次编辑于  09-08
回答关注问题邀请回答
收藏

2 个回答

  • dreamhunter
    dreamhunter
    09-09

    出现这个问题可能有以下几个原因及解决方法:


    一、证书问题


    1. 可能性分析:如果服务器使用了自签名证书或者证书配置不正确,真机可能会拒绝连接,而模拟器和 H5 端可能没有那么严格的证书验证。
    • 解决方法:确保服务器使用的是由受信任的证书颁发机构颁发的证书。如果是自签名证书,需要在真机上安装该证书或者将服务器配置为使用可信任的证书。
    • 检查证书的有效期、域名匹配等问题,确保证书正确配置。


    二、网络限制


    1. 可能性分析:真机可能处于不同的网络环境,可能存在网络限制或防火墙阻止了 WebSocket 连接。
    • 解决方法:检查真机的网络设置,确保没有防火墙或网络代理阻止了 WebSocket 连接。可以尝试切换网络环境,如从 Wi-Fi 切换到移动数据,看问题是否仍然存在。
    • 如果是在企业网络环境中,可能需要联系网络管理员检查网络配置。


    三、小程序版本差异


    1. 可能性分析:不同版本的微信小程序可能对 WebSocket 的支持程度不同,或者存在一些已知的问题。
    • 解决方法:确保你的微信小程序是最新版本。更新微信和小程序可能会修复一些与 WebSocket 连接相关的问题。
    • 检查微信小程序的文档,看是否有关于特定版本中 WebSocket 连接的已知问题或限制。


    四、代码兼容性问题


    1. 可能性分析:虽然代码在模拟器和 H5 端正常,但可能在真机上存在一些兼容性问题。
    • 解决方法:仔细检查代码中与 WebSocket 连接相关的部分,确保没有使用一些不被真机支持的特性或方法。
    • 可以使用调试工具在真机上调试小程序,查看具体的错误信息和代码执行情况,以便更好地定位问题。


    五、服务器配置问题


    1. 可能性分析:服务器的配置可能不兼容真机的连接请求。
    • 解决方法:检查服务器的 WebSocket 配置,确保服务器允许来自真机的连接。可以查看服务器日志,看是否有关于连接请求被拒绝的信息。
    • 尝试调整服务器的 WebSocket 配置参数,如连接超时时间、缓冲区大小等,看是否能解决问题。


    09-09
    有用
    回复
  • 启年
    启年
    09-08

    可以开发者工具选择真机调试,查看request请求头,跟 模拟器和h5端的 请求头 做对比进行排查。

    09-08
    有用
    回复
登录 后发表内容