uni-app 【报Bug】 uni.connectSocket 无法触发 socketTask.onOpen

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app 【报Bug】 uni.connectSocket 无法触发 socketTask.onOpen

示例代码:

H5 微信小程序 正常,APP下不正常 ,用了另一个网址 正常 用这个就不正常 ,在线wss都正常

socketTask = uni.connectSocket({  
    url: requestUrl,//不正常 机密信息中  
    //url: 'wss://plachta-vall-e-x.hf.space/queue/join',//正常  
    complete: (res) => {  
        console.log('处理完成', res)  
    }  
});  
socketTask.onError((obj) => {  
    //console.log(obj); 不正常的返回{}  
});  
socketTask.onOpen((data) => {  
    //console.log('链接成,准备发 ,不正常的 不进入')  
});  
function guid2() {  
    function S4() {  
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);  
    }  
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());  
}  

操作步骤:

调用代码复现 注意在APP上面 H5 和小程序正常

预期结果:

和其他平台一样进入 onOpen

实际结果:

进入 onError 但不返回内容

bug描述:

H5 微信小程序 正常,APP下不正常 ,用了另一个网址 正常 用这个就不正常 ,在线wss都正常

socketTask = uni.connectSocket({  
    url: requestUrl,//不正常 机密信息中  
    //url: 'wss://plachta-vall-e-x.hf.space/queue/join',//正常  
    complete: (res) => {  
        console.log('处理完成', res)  
    }  
});  
socketTask.onError((obj) => {  
    //console.log(obj); 不正常的返回{}  
});  
socketTask.onOpen((data) => {  
    //console.log('链接成,准备发 ,不正常的 不进入')  
});  
function guid2() {  
    function S4() {  
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);  
    }  
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());  
}  

使用 uni.connectSocket 在APP 安卓下 链接时返回 正常 但无法进入 onOpen 触发了 onError 但不返回错误内容,提供了一个不正常的网站和正常的网站,其中不正常的网站 可以正常使用在 H5 小程序上

开发环境 版本号 项目创建方式
Windows 11 HBuilderX
Android 14
手机厂商
手机机型
页面类型 vue
vue版本 vue2
打包方式 云端

2 回复

有解决吗?


在使用 uni.connectSocket 时,如果 socketTask.onOpen 无法触发,可能是由于以下几个原因导致的。你可以根据这些原因进行排查和修复:

1. 网络问题

  • 确保设备网络连接正常,能够访问到 WebSocket 服务器。
  • 检查服务器地址是否正确,确保服务器地址是有效的 WebSocket 地址(以 ws://wss:// 开头)。

2. 服务器问题

  • 确保 WebSocket 服务器正常运行,并且能够接受连接。
  • 检查服务器是否有防火墙或安全策略阻止了连接。

3. 代码问题

  • 确保 uni.connectSocket 的调用是正确的,并且 url 参数是有效的 WebSocket 地址。
  • 确保 socketTask.onOpen 是在 uni.connectSocket 返回的 socketTask 对象上调用的。

示例代码:

const socketTask = uni.connectSocket({
  url: 'wss://your.websocket.server',
  success: () => {
    console.log('WebSocket 连接成功');
  },
  fail: (err) => {
    console.error('WebSocket 连接失败', err);
  }
});

socketTask.onOpen((res) => {
  console.log('WebSocket 已打开', res);
});

socketTask.onError((err) => {
  console.error('WebSocket 错误', err);
});

socketTask.onClose((res) => {
  console.log('WebSocket 已关闭', res);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!