websocket初体验(小程序)

Posted visiliki-lvy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket初体验(小程序)相关的知识,希望对你有一定的参考价值。

之前上个公司做过一个二维码付款功能,涉及到websocket功能,直接上代码

小程序onShow方法下加载:

/**  页面的初始数据 **/
 data: 
    code: "",
    onshowCode: "",
    hiden: true,
    show: false,
    array: ,
    has_password: "",
    openid: "",
    showPop: false,
    pwd: "",
    num: "",
    cashierid: "",
    socketOpen: false
  ,
  onShow: function() 
    var _this = this;
    a.get("ipass.get_user_qr", , function(e) 
//获取到openID(传的参数)      
      console.log(e);
      var openid = e.openid;
      console.log(openid);
      _this.setData(
        array: e,
        openid: openid
      );
      var token = _this.data.openid;
      var socketOpen = false;
      var data =  type: "ready", uid: token ;   // 给websocket传值
      var socketMsgQueue = JSON.stringify(data);   // 将值转化为字符串
      // 连接websocket
      wx.connectSocket(
        url: "wss://paytest.kuaiyunma.com",    //websocket 地址
        success(e) 
          console.log(e);
        
      );
      // 监听WebSocket 连接打开事件
      wx.onSocketOpen(function(res) 
        console.log("123");
        _this.data.socketOpen = true; 
        console.log("数据发送中" + socketMsgQueue);
        _this.sendSocketMessage(socketMsgQueue);  // 自定义方法
      );
      // 监听WebSocket 错误事件
      wx.onSocketError(function(res) 
        console.log("WebSocket连接打开失败,请检查!");
      );
      // 监听WebSocket 接受到服务器的消息事件
      wx.onSocketMessage(function(res) 
        console.log(JSON.parse(res.data));
//获取到websocket返回的值
        var res = JSON.parse(res.data);
//将值转化为对象
        var num = res.fee;
//定义传过来的数值
        var cashierid = res.cashierid;
// 根据传的值进行判断    
        if (res.type == "password") 
          _this.setData(
            showPop: true,
            num: num,
            res: res,
            cashierid: cashierid
          );
         else if (res.type == "pay_result") 
          if (res.result == "ok") 
            a.post(
              "ipass.pay",
              
                cashierid: _this.data.cashierid,
                money: _this.data.num
              ,
              function(e) 
                console.log(e);
                if (e.result.success === true) 
                  wx.showToast(
                    title: "支付成功!",
                    icon: "success"
                  );
                 else 
                  wx.showToast(
                    title: "支付失败",
                    icon: "none"
                  );
                
                _this.clearNum();
              
            );
           else 
            wx.showToast(
              title: "支付失败",
              icon: "none"
            );
          
        
      );
    );
  ,
//设置公共传值的方法~~
  sendSocketMessage: function(msg) 
    var socketOpen = this.data.socketOpen;
    if (socketOpen) 
      wx.sendSocketMessage(
        data: msg,
        success(e) 
          console.log(e);
        
      );
    
  ,
  inputPwd(e) 
    console.log(e);
    var pwd = e.target.dataset.value;
    let rule = /[0-9]/;
    if (!rule.test(pwd)) 
      return;
    
    pwd = this.data.pwd + pwd;
    console.log(pwd);
    this.setData(
      pwd: pwd
    );
    var _this = this;
    if (pwd.toString().length == 6) 
      wx.showLoading(
        title: "支付中...",
        mask: true
      );
      console.log("成功");
      a.post(
        "ipass.password.auth",
        
          password: _this.data.pwd
        ,
        function(e) 
          console.log(e);
          wx.hideLoading();
          // var socketOpen = true;
          // 定义传的data值
          var data1 = 
            type: "validate_password",
            token: _this.data.res.token,
            cashierid: _this.data.res.cashierid,
            password: _this.data.pwd
          ;
          // 将转换的对象转换为字符串
          var socketMsgQueue1 = JSON.stringify(data1);
          if (!e.auth) 
            _this.setData(
              showPop: false,
              pwd: ""
            );
            wx.showToast(
              title: "支付密码错误",
              icon: "none"
            );
           else 
            // 发送socket信息
            _this.sendSocketMessage(socketMsgQueue1);

            _this.setData(
              showPop: false,
              pwd: ""
            );
          
        
      );
      setTimeout(() => 
        wx.hideLoading(
          success: function() 
            _this.setData(
              showPop: false,
              hasPaid: true
            );
          
        );
      , 2000);
    
  ,

 

以上是关于websocket初体验(小程序)的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序DEMO初体验

Android websock 应用

wx小程序初体验

尝新微信小程序初体验

小程序初体验

小程序的初体验