美文网首页
小程序WebSocket前端心得

小程序WebSocket前端心得

作者: 在下高姓 | 来源:发表于2020-07-02 09:52 被阅读0次
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)
       })
     }
   },

相关文章

网友评论

      本文标题:小程序WebSocket前端心得

      本文链接:https://www.haomeiwen.com/subject/bdslqktx.html