恶心
恶心
  • 发布:2020-11-12 18:20
  • 更新:2020-11-13 17:54
  • 阅读:1348

【报Bug】在真机运行下不打开调试面板,SocketTask.onOpen()方法不执行。当打开调试面板,就会执行。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 2.9.8

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: 小米10

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
createSocket(id, userId) {  
                // 创建一个socket连接  
                // console.log(id, userId)  
                this.socketTask = uni.connectSocket({  
                    url: `ws://192.168.1.31:31272/dsppmlive/ws/comment/${id}/${userId}`,  
                    success: () => {  
                        console.log('链接成功')  
                    }  
                })  
                // 打开socket通道  
                this.socketTask.onOpen(() => {  
                    console.log('链接成功')  
                })  
                // 服务器返回的消息  
                this.socketTask.onMessage((back) => {  
                    let backData = JSON.parse(back.data)  
                    console.log("这里是服务器返回的消息", backData)  
                })

操作步骤:
createSocket(id, userId) {  
                // 创建一个socket连接  
                // console.log(id, userId)  
                this.socketTask = uni.connectSocket({  
                    url: `ws://192.168.1.31:31272/dsppmlive/ws/comment/${id}/${userId}`,  
                    success: () => {  
                        console.log('链接成功')  
                    }  
                })  
                // 打开socket通道  
                this.socketTask.onOpen(() => {  
                    console.log('链接成功')  
                })  
                // 服务器返回的消息  
                this.socketTask.onMessage((back) => {  
                    let backData = JSON.parse(back.data)  
                    console.log("这里是服务器返回的消息", backData)  
                })

预期结果:

不管是否打开HbuilderX的真机调试选项,都应该执行socketTask.onOpen()函数才对。

实际结果:

真机运行,当打开HbuilderX调试面板时,创建一个socket,此时能触发socketTask.onOpen()函数,当关闭调试面板时,创建一个socket,此时不能触发socketTask.onOpen()函数。望官方大佬能看看我的问题。我已经调试了两天也没找出原因。。

bug描述:

真机运行,当打开调试面板时,创建一个socket,此时能触发socketTask.onOpen()函数,并打印对应的日志。当关闭调试面板时,创建一个socket,此时不能触发socketTask.onOpen()函数,没有日志输出。望官方大佬能看看我的问题。我已经调试了两天也没找出原因。。

2020-11-12 18:20 负责人:无 分享
已邀请:
恶心

恶心 (作者) - 一个辣鸡码农

创建的这个socket对象,能发送消息,但是接收不到消息。

图1和图2就是不开真机的调试工具的效果。

图3和图4就是开真机的调试工具的效果。可以明显的看到开了真机的调试工具,这个socket对象能正确触发OnOpen()和OnMessage()函数,从而让页面有消息。不开就不触发这个函数。

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

加个onError看看有没有什么错误信息

  • 恶心 (作者)

    报错信息是一个空对象,还有编译器只要报unexpected EOF!。面板就不在打印日志信息了。我的图放在下来了。

    2020-11-13 17:35

  • DCloud_uniCloud_WYQ

    回复 恶心: 直接打印e,或者JSON.stringify(e)

    2020-11-13 17:51

  • 恶心 (作者)

    回复 DCloud_uniCloud_WYQ: 直接打印e也是一个空对象。

    2020-11-13 18:03

恶心

恶心 (作者) - 一个辣鸡码农

XINGHONG_

XINGHONG_

我也用的SocketTask,并没有遇到楼主这个问题

  • 恶心 (作者)

    我也不知道是不是运气不好。。。

    2020-11-13 18:02

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