- 发布:2020-06-08 17:04
- 更新:2020-06-24 15:01
- 阅读:1697
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: window 10
HBuilderX类型: 正式
HBuilderX版本号: 2.7.9
手机系统: 全部
手机厂商: 华为
页面类型: nvue
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
操作步骤:
页面1
<template>
<view class="pages" >
<text>页面1--{{socket}}</text>
<button type="default" @tap="toPage">转页面2</button>
</view>
</template>
<script>
export default {
data() {
return {
socket : false
}
},
onLoad() {
uni.connectSocket({
url: 'ws://192.168.0.4:7272',
success: (res) => {
console.log(res);
}
});
uni.onSocketMessage((res) => {
console.log(res);
this.socket = true
})
},
methods: {
toPage() {
uni.navigateTo({
url: '/pages/index/test2',
});
}
}
}
</script>
<style>
</style>
页面2
<template>
<view class="pages" >
<text >页面2--{{socket}}</text>
</view>
</template>
<script>
export default {
data() {
return {
socket : false
}
},
onLoad() {
// uni.closeSocket() 先关闭 在连接则正常
uni.connectSocket({
url: 'ws://192.168.0.4:7272',
success: (res) => {
console.log(res);
}
});
uni.onSocketMessage((res) => {
console.log(res);
this.socket = true
})
},
methods: {
}
}
</script>
<style>
</style>
页面1
<template>
<view class="pages" >
<text>页面1--{{socket}}</text>
<button type="default" @tap="toPage">转页面2</button>
</view>
</template>
<script>
export default {
data() {
return {
socket : false
}
},
onLoad() {
uni.connectSocket({
url: 'ws://192.168.0.4:7272',
success: (res) => {
console.log(res);
}
});
uni.onSocketMessage((res) => {
console.log(res);
this.socket = true
})
},
methods: {
toPage() {
uni.navigateTo({
url: '/pages/index/test2',
});
}
}
}
</script>
<style>
</style>
页面2
<template>
<view class="pages" >
<text >页面2--{{socket}}</text>
</view>
</template>
<script>
export default {
data() {
return {
socket : false
}
},
onLoad() {
// uni.closeSocket() 先关闭 在连接则正常
uni.connectSocket({
url: 'ws://192.168.0.4:7272',
success: (res) => {
console.log(res);
}
});
uni.onSocketMessage((res) => {
console.log(res);
this.socket = true
})
},
methods: {
}
}
</script>
<style>
</style>
预期结果:
每个连接都能正常触发
每个连接都能正常触发
实际结果:
再次连接不能触发
再次连接不能触发
bug描述:
多页面连接uni.connectSocket ,第二页连接可以连接成功,触发回调{"errMsg":"connectSocket:ok"} ,但是二页面无法触发uni.onSocketMessage
不过页面二 uni.closeSocket() 先关闭 在连接则正常触发
你是希望创建多个连接?那应该使用socketTask https://uniapp.dcloud.net.cn/api/request/socket-task?id=sockettaskonmessage
-
DCMarvel (作者)
嗯,有时间试试,看文档没发现此api,只看到:App平台,2.2.6+起支持多个socket链接,数量没有限制.
现已经改成单连接 uni.$on uni.$emit 通讯了2020-06-09 13:28
DCMarvel (作者)
我还以为官方回复这么快呢.哈哈
2020-06-08 17:22