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 环境下可以正常连接 wss
和 ws
,但在安卓设备上无法连接 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'); };
- 确保