const task = uni.connectSocket({
url: '',
complete() {},
})
task.onOpen(() => {console.log(333)})
task.onMessage(res => {
console.log('收到message', res)
});

- 发布:2023-01-16 19:43
- 更新:2023-02-06 11:38
- 阅读:304
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 12.5.1
HBuilderX类型: 正式
HBuilderX版本号: 3.6.17
手机系统: Android
手机系统版本号: Android 12
手机厂商: 小米
手机机型: 小米12
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
连接websocket,server下发消息,端上看消息不正常
连接websocket,server下发消息,端上看消息不正常
预期结果:
server下发什么消息,端上收到该消息
server下发什么消息,端上收到该消息
实际结果:
收到的消息是 {"data":"{\"@type\":\"binary\",\"base64\":\"IQAAAAd1c2VyMDAxABZlVXBpeVBVOEFGTmExeWpUUy1XX1Z6AAABhbpcRgI=\"}"}
非下发的消息
收到的消息是 {"data":"{\"@type\":\"binary\",\"base64\":\"IQAAAAd1c2VyMDAxABZlVXBpeVBVOEFGTmExeWpUUy1XX1Z6AAABhbpcRgI=\"}"}
非下发的消息
bug描述:
在 3.1.22 版本没问题
在 最新版本出现问题,现象:
建立websocket连接后,server下发二进制数据,tcp 抓包看着数据正常,到了websocket.onMessage 中 收到的是 {"data":"{\"@type\":\"binary\",\"base64\":\"IQAAAAd1c2VyMDAxABZlVXBpeVBVOEFGTmExeWpUUy1XX1Z6AAABhbpcRgI=\"}"} 。
2 个回复
1***@qq.com (作者)
说明一下,服务下发的是ArrayBuffer 。在uniapp打的包在浏览器中打印如图,在 安卓中如问题描述的实际结果
1***@qq.com (作者)
问题补充:
明确出现问题的版本是 3.6.17 。
经排查是 uni 的bug,这里的data 类型应该是对象而不是字符串