// 放入methods里面在 onLoad() 调用即可
connectSocketInit(){
// 创建一个this.socketTask对象(发送、接收、关闭socket都由这个对象操作)
let ip = uni.getStorageSync('ip'); //读取缓存里面的IP
let port = uni.getStorageSync('port');//读取缓存里面的端口号
uni.connectSocket({
url: 'ws://'+ip+':'+port,,
success(data){
console.log("websocket连接成功",data)
}
})
//监听socket打开
uni.onSocketOpen(()=>{
this.is_opensocket=true
console.log('WebSocket连接已打开!')
this.connectSocketInit()
})
//监听socket关闭
uni.onSocketClose(()=>{
this.is_opensocket=false;
this.connectSocketInit()
console.log('WebSocket连接已关闭!')
})
//监听socket错误
uni.onSocketError(()=>{
this.is_opensocket=false
this.connectSocketInit()
console.log('WebSocket连接打开失败');
})
uni.onSocketMessage((res)=>{
console.log(res)
})
//先确保清除了之前的心跳定时器
clearInterval(this.pingpangTimes)
// 每过一段时间发送一次心跳,发送Ping,服务器会反馈pong,这样操作以保持socket一直是连接状态,防止断开连接,心跳停止
this.pingpangTimes=setInterval(()=>{
// 心跳传参
let heartData = {
type:'is ok',
}
uni.sendSocketMessage({
data: JSON.stringify(heartData),
success:(res)=>{
console.log('心跳的返回:',res) 其实监听里面有,或者不返回跟后端,用处不大,可以删除
},
fail:(res)=>{
// console.log(res)
this.is_opensocket=false
}
});
},50000);
}
uni-app WebSocket持久链接状态监听
猜你喜欢
转载自blog.csdn.net/weixin_43695488/article/details/125768297
今日推荐
周排行