hbuilderX 1.8.2之后的版本,1.8.2版本可以用,uni-app的websocket创建一个之后,再创建另一个,之前创建的就不能用了,也没触发close,但是就是不能用了。
在h5端可以使用,在app端不能用。
非常急,希望尽快修复
- 发布:2019-05-20 09:49
- 更新:2021-11-30 09:49
- 阅读:10505
最佳回复
自定义组件模式下是基于weex的v8引擎运行,所有vue页面的js都是在同一个weex的js环境中运行。
目前weex限制一个js环境中只支持一个websocket连接,所以导致所有vue页面只能使用一个websocket连接。
临时解决方案:
- 回退使用非自定义组件模式(不推荐)
- 多个websocket在独立的nvue页面中使用
后续我们会修改weex的限制,以支持多个websocket连接
遇到同样问题,忍不住登录吐槽下, 官方态度太暧昧, 文档 支持 wss和ws, ws一直出问题,wss就没问题, 自己的东西都不经过单元测试, 拿程序员当测试吗? 到现在都没解决这个问题! 还天天看到推送文章 和这个和那个比, 能不能先做好自己
回梦無痕 - 暂停服务
let socketTask_A = uni.connectSocket({
url: 'wss://www.AAA.com',
complete: ()=> {}
});
let socketTask_B = uni.connectSocket({
url: 'wss://www.BBB.com',
complete: ()=> {}
});
socketTask_A.onOpen((res)=>{
console.log(res)
})
socketTask_B.onOpen((res)=>{
console.log(res)
})
这样也不行吗?
-
大话疼 (作者)
我就是这样的,你这个socketTask_B执行后socketTask_A就不能用了,onmessage收不到消息,等了好长时间socketTask_A的close才执行
2019-05-24 09:33
var socketTask = uni.uploadFile({
url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。
complete: ()=> {}
});
socketTask.open(); 这个示例什么意思,提示参数不对
uni.connectSocket 和task,不管怎么弄连接都是混乱的
-
大话疼 (作者)
回复 DCloud_uni-ad_HDX: 文档还是那样啊,var socketTask = uni.connectSocket,这个是什么啊,怎么用啊
2019-06-27 09:20
-
大话疼 (作者)
回复 DCloud_uni-ad_HDX: var socketTask = uni.connectSocket({
url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。
complete: ()=> {}
});
socketTask.open();
我这这样用,直接报错啊2019-06-27 13:32
-
回复 DCloud_uni-ad_HDX: 没有找到强制刷新的方法,网上找到的小程序解决办法:将不需要刷新的数据放在onLoad中执行,将需要刷新的数据放在onShow中执行!这个也没有用。
2019-07-02 11:25
大话疼 (作者)
我没有使用nvue,都是使用的vue,这是不是很难办啊
2019-07-19 15:52
lifeng_dev
所谓自定义组件模式就是说使用了官方带的扩展组件(hello uniapp里的扩展组件)吗
2020-01-03 09:12
7***@qq.com
一年了 还没搞好?
2020-08-20 08:36
q***@126.com
回复 7***@qq.com: 都将近两年了还没解决
2021-06-01 18:35
e***@foxmail.com
还没有解决,不由让人怀疑 uniapp 的技术力
2021-11-02 17:12
很秃然wlf
回复 e***@foxmail.com: 现在还没有解决吗
2021-11-04 09:59
DCloud_App_Array
回复 很秃然wlf: websocket支持多个连接的,如还碰到问题请按提交Bug模板重新发帖
2021-11-04 12:26
2***@qq.com
现在week环境的限制修复了吗
2021-11-30 09:52
1***@qq.com
回复 DCloud_App_Array: 有冲突啊
2021-12-07 20:35
Yeyou
let id = uni.getStorageSync('useid');
var socketOpen = false;
var socketMsgQueue = 'login:' + id;
let webScoket2 = wx.connectSocket({
url: 'XXXXXXXXXXX'
});
// 连接成功后的回调函数
webScoket2.onOpen(function(res) {
let msg = socketMsgQueue;
// 发送消息
webScoket2.send({
data: msg
});
});
var _this = this;
// 监听 WebSocket 接受到服务器的消息事件
webScoket2.onMessage(function(data) {
console.log(data);
});
赋值可以使用两个socket,亲测有用
2021-12-24 14:16