2***@qq.com
2***@qq.com
  • 发布:2020-03-02 16:08
  • 更新:2020-03-04 15:02
  • 阅读:1149

【报Bug】uni.connectSocket 在V3编译下,关闭的问题

分类:uni-app

详细问题描述

V3模式下,创建成功后,如果连接失败触发关闭事件,报以下错误
TypeError: undefined is not an object (evaluating 'e.success')

非V3模式,创建成功后,如果连接失败触发关闭事件,正常不报错
[内容]

重现步骤

[步骤]
非V3模式下

methods: {  
            add(){  
                this.socketTask = uni.connectSocket({  
                    url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。  
                    complete: ()=> {}  
                });  
                this.socketTask.onOpen(res => {  
                    console.log('连接打开')  
                })  
                this.socketTask.onMessage(res => {  
                    console.log('接受消息',res)  
                })  
                this.socketTask.onError(res => {  
                    console.log('连接异常')  
                })  
                this.socketTask.onClose(res => {  
                    console.log('连接关闭')  
                })  
            },  
            clear(){  
                console.log(this.socketTask)  
                this.socketTask.close()  
            }  
        }  

[结果]
{
"CONNECTING": 0,
"OPEN": 1,
"CLOSING": 2,
"CLOSED": 3,
"readyState": 3
}

[步骤]
V3模式下

methods: {  
            add(){  
                this.socketTask = uni.connectSocket({  
                    url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。  
                    complete: ()=> {}  
                });  
                this.socketTask.onOpen(res => {  
                    console.log('连接打开')  
                })  
                this.socketTask.onMessage(res => {  
                    console.log('接受消息',res)  
                })  
                this.socketTask.onError(res => {  
                    console.log('连接异常')  
                })  
                this.socketTask.onClose(res => {  
                    console.log('连接关闭')  
                })  
            },  
            clear(){  
                console.log(this.socketTask)  
                this.socketTask.close()  
            }  
        }

[结果]
TypeError: undefined is not an object (evaluating 'e.success')
{
"id": "1583203012584",
"_callbacks": {
"open": [null],
"close": [null],
"error": [null],
"message": [null]
},
"CLOSED": 3,
"CLOSING": 2,
"CONNECTING": 0,
"OPEN": 1,
"readyState": 3
}

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
HBuilderX

[IDE版本号]
2.6.1.20200226

[windows版本号]
win10

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
APP

[运行端版本号]
编译器版本:2.6.1(v3)

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]
V3

App运行环境说明

[Android版本号]
安卓10

[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2020-03-02 16:08 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

测试未复现,能否提供一个示例工程

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

    这边测试发现不是数据存储的问题,是uni.connectSocket()的问题

    2020-03-03 10:42

2***@qq.com

2***@qq.com (作者) - 咸鱼王

由于之前非V3模式下不关闭之前的连接,会造成多个连接存在的情况,所以要关闭之前的连接,V3模式下,关闭之前的连接会报错TypeError: undefined is not an object (evaluating 'e.success')

2***@qq.com

2***@qq.com (作者) - 咸鱼王

临时解决方法 uni.closeSocket()

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