1.一个小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接所以当链接一个WebSocket时要判断是否断开
wx.onSocketClose((res) => {
console.log('WebSocket 已断开')
wx.connectSocket({//再链接WebSocket
url: 'wss://peiwan.cdzhlc.cn:9501'})
})
2.如果是全局登录调用WebSocke给一个延迟调用--不能写再WebSocke链接成功的回调里面,不然WebSocke状态变化会调动
setTimeout(function(){
let data={
type:"login",
uid:wx.getStorageSync('uid')
};
that.sendMessage(data)
},1000)
wx.onSocketOpen(() => {
console.log('WebSocket 已连接')
this.globalData.socketStatus = 'connected';
this.sendMessage();
})
//报错时的动作
wx.onSocketError(error => {
console.error('socket error:', error)
})
// 监听服务器推送的消息
wx.onSocketMessage(message => {
//把JSONStr转为JSON
message = message.data.replace(" ", "");
if (typeof message != 'object') {
message = message.replace(/\ufeff/g, ""); //重点
var jj = JSON.parse(message);
message = jj;
}
console.log("【websocket监听到消息】");
console.log(message);
})
//关闭信道
closeSocket() {
if (this.globalData.socketStatus === 'connected') {
wx.closeSocket({
success: () => {
this.globalData.socketStatus = 'closed'
}
})
}
},
//发送消息函数
sendMessage(aa) {
if (this.globalData.socketStatus === 'connected') {
//自定义的发给后台识别的参数 ,我这里发送的是name
console.log(aa)
wx.sendSocketMessage({
data:JSON.stringify(aa)
})
}
},
网友评论