uni-app connectSocket在h5环境可连接wss和ws,在安卓设备无法连接wss但可连接ws

uni-app connectSocket在h5环境可连接wss和ws,在安卓设备无法连接wss但可连接ws

示例代码:

var socketTask = uni.connectSocket({  
      url: 'wss://****',  
      method: 'GET',  
      success: () => {},  
});  
socketTask.onOpen(() => {  
      console.log('WebSocket连接已打开!');  
});  
socketTask.onError((errMsg) => {  
      console.log('errMsg===>', errMsg);  
      // 打印的内容:errMsg==> 实际报错内容  
});

操作步骤:

var socketTask = uni.connectSocket({  
      url: 'wss://****',  
      method: 'GET',  
      success: () => {},  
});

预期结果:

socketTask.onOpen(() => {  
      console.log('WebSocket连接已打开!');  
});  
socketTask.onError((errMsg) => {  
      console.log('errMsg==>', errMsg);  
      // 预期打印的内容:errMsg==> 实际报错内容  
});

实际结果:

socketTask.onError((errMsg) => {  
      console.log('errMsg==>', errMsg);  
      // 实际打印的内容:errMsg==> {}
});

bug描述:

在app端使用 uni.connectSocket API无法连接wss地址

通过SocketTask onError 或者uni.onSocketError监听报错信息返回的是一个空对象:{}

在app端连接ws地址,可以连接成功执行onOpen方法

在H5端连接ws、wss地址都可以连接成功,执行onOpen方法


### 项目信息

| 信息           | 值                                           |
|----------------|----------------------------------------------|
| 产品分类       | uniapp/App                                   |
| PC开发环境     | Windows                                      |
| PC开发环境版本 | 19044.1826                                   |
| 手机系统       | Android                                      |
| 手机系统版本   | Android 14                                   |
| 手机厂商       | OPPO                                         |
| 手机机型       | oppo findx6 pro                              |
| 页面类型       | vue                                          |
| vue版本        | vue3                                         |
| 打包方式       | 云端                                         |
| 项目创建方式   | CLI                                          |
| CLI版本号      | 3.0.0-3081220230817001                       |

更多关于uni-app connectSocket在h5环境可连接wss和ws,在安卓设备无法连接wss但可连接ws的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

这个问题最后解决了嘛,真机上连接wss能连上但是会秒断,报错误代码1006

更多关于uni-app connectSocket在h5环境可连接wss和ws,在安卓设备无法连接wss但可连接ws的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中,使用 connectSocket 连接 WebSocket 时,H5 环境下可以正常连接 wssws,但在安卓设备上无法连接 wss,只能连接 ws,这可能是由于以下几个原因导致的:


1. 证书问题

  • wss 是 WebSocket 的安全版本,基于 HTTPS,需要有效的 SSL/TLS 证书。
  • 如果你的证书是自签名的或不受信任的,安卓设备可能会拒绝连接。
  • 解决方法:确保你的服务器使用的是受信任的 SSL/TLS 证书(例如 Let’s Encrypt 颁发的证书)。

2. 网络配置问题

  • 安卓设备可能存在网络配置问题,例如代理或防火墙阻止了 wss 连接。
  • 解决方法:检查设备的网络设置,确保没有限制 wss 连接。

3. uni-app 的兼容性问题

  • uni-app 在不同平台(H5、安卓、iOS)上的实现可能有所不同,安卓端可能存在对 wss 的支持问题。
  • 解决方法
    • 确保 uni-app 的版本是最新的,老版本可能存在兼容性问题。
    • 如果问题仍然存在,可以尝试使用原生 WebSocket API 进行连接,例如:
      const socket = new WebSocket('wss://your-server-url');
      socket.onopen = () => {
          console.log('WebSocket connected');
      };
      socket.onmessage = (event) => {
          console.log('Message received:', event.data);
      };
      socket.onerror = (error) => {
          console.error('WebSocket error:', error);
      };
      socket.onclose = () => {
          console.log('WebSocket closed');
      };
回到顶部