9***@qq.com
9***@qq.com
  • 发布:2022-07-08 13:50
  • 更新:2022-07-28 14:50
  • 阅读:974

【报Bug】iPhone 使用 websocket 连接不上问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win 10

HBuilderX类型: 正式

HBuilderX版本号: 3.4.18

手机系统: iOS

手机系统版本号: iOS 15

手机厂商: 苹果

手机机型: iphone 13

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

if (typeof socketUrl != "string") {
throw new Error("TypeError: wsUrl 类型错误!");
}

    if (!isWsURL(socketUrl)) {  
      throw new Error("TypeError: wsUrl 格式错误!");  
    }  

    this.socketUrl = socketUrl;  
    console.log("执行connect");  
    this.socketTask = uni.connectSocket({  
      url: socketUrl,  
      header: {  
        ...header,  
      },  
      complete: () => {  
        console.log("执行connect complete");  
      },  
      fail(error) {  
        console.log("执行connect error");  
        console.log(error);  
      },  
    });  

    this.socketTask.onMessage(this.onMessage.bind(this));  

    this.socketTask.onOpen(this.onOpen.bind(this));  

    this.socketTask.onClose(this.onClose.bind(this));  

    this.socketTask.onError(this.onSktError.bind(this));  

    return this.socketTask;

操作步骤:

真机调试连接ws

预期结果:

可以正常连接,可正常通信

实际结果:

无法正常连接,无法正常通信

bug描述:

iPhone 连接 websocket 连接不成功问题,所有监听回调都没有调用 onopen \ onerror \ onclose ,开发模式:真机调试,ws 协议、wss 协议都有测试,都连接不上,而且不执行回调

2022-07-08 13:50 负责人:DCloud_iOS_WZT 分享
已邀请:
9***@qq.com

9***@qq.com (作者)

不要沉,顶起来

DCloud_iOS_WZT

DCloud_iOS_WZT

你的url发我试下

  • 9***@qq.com (作者)

    不好意思,目前没有测试服务器。同样的代码安卓是可以的,ios不行

    2022-07-11 08:46

  • DCloud_iOS_WZT

    回复 9***@qq.com: 完整的示例代码发一下?

    2022-07-11 11:43

  • 9***@qq.com (作者)

    解决了,websocket 链接 url 不能有中文,由于测试用户名是写死的,所以iOS表现连接不成功,没有走回调。记录一下,有遇到同样问题的小伙伴,直接 url = encodeURI(url)

    2022-07-11 14:03

1***@qq.com

1***@qq.com

你好你好可以详细描述下怎么解决的嘛

  • 9***@qq.com (作者)

    connectSocket 的时候,url 字符串做一次编码(encodeURI)

    2022-08-04 16:03

该问题目前已经被锁定, 无法添加新回复