小程序
小游戏
企业微信
微信支付
扫描小程序码分享
项目里面用到了websocket,我写了个断线重连的方法。具体是把断线重连方法写道wx.onSocketClose和wx.onSocketError这两个方法里面,手机是iphone se,调试发现。当手机突然断网再重连时候会同时触发这两个方法,导致重连了两次。然后我把wx.onSocketError删掉了,是可以重连一次的。但是有什么更好的方法保证客户端什么时候都是只建立一个socket连接?(ps:手机锁屏,应用后台时候只会触发wx.onSocketClose)
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
两个监听里都做个判断,是否在重连。进行重连的方法里写个布尔值,是否正在重连。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
watchWebsocket(){
wx.onSocketClose(function (res) {
console.log('WebSocket 已关闭!')
if (!this.data.reConnectFlag) {
_this.reConnect()
}
})
wx.onSocketError(function (res) {
console.log('WebSocket 连接出错!')
if (!this.data.reConnectFlag){
reConnect(){
this.setData({
reConnectFlag: false
// 重连方法
// ...
// 连接成功后
reConnectFlag: true
是这个意思吗?
对啊。。无效吗?
无效
哇!这么怪!把console移到 if判断里面去呢。。都进去了的吗
这个逻辑有问题了,第一次断线重连是可以成功的,但是重连成功后reConnectFlag: true,第二次重连的时候会判断reConnectFlag,导致第二次不能连接
websocket 可以当 tcpsocket 使用吗?
不知道,没接触过tcpsocket
恩 谢谢
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
两个监听里都做个判断,是否在重连。进行重连的方法里写个布尔值,是否正在重连。
watchWebsocket(){
wx.onSocketClose(function (res) {
console.log('WebSocket 已关闭!')
if (!this.data.reConnectFlag) {
_this.reConnect()
}
})
wx.onSocketError(function (res) {
console.log('WebSocket 连接出错!')
if (!this.data.reConnectFlag){
_this.reConnect()
}
})
}
reConnect(){
this.setData({
reConnectFlag: false
})
// 重连方法
// ...
// 连接成功后
this.setData({
reConnectFlag: true
})
}
是这个意思吗?
对啊。。无效吗?
无效
哇!这么怪!把console移到 if判断里面去呢。。都进去了的吗
这个逻辑有问题了,第一次断线重连是可以成功的,但是重连成功后reConnectFlag: true,第二次重连的时候会判断reConnectFlag,导致第二次不能连接
websocket 可以当 tcpsocket 使用吗?
不知道,没接触过tcpsocket
恩 谢谢