快速上手微信小程序webSocket


WebSocket是一種在單個 TCP連接上進行 全雙工通信的協議。WebSocket通信協議於2011年被 IETF定為標准RFC 6455,並由RFC7936補充規范。WebSocket  API也被 W3C定為標准。
WebSocket使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。

今天簡單講解下微信小程序的webSocket如何使用:

微信webSocketAPI直通車

以下webSocket是本人使用微信小程序api寫的一些步驟封裝,主要是小程序端的實現,真正實現webSocket項目還要后台人員的給力支持。

小程序中,可以在onLoad方法開始一個webSoket連接,在onHide時關閉連接。

var sotk = null;
var socketOpen = false;
var wsbasePath = "ws://開發者服務器 wss 接口地址/";

//開始webSocket
  webSocketStart(e){
    sotk = wx.connectSocket({
      url: wsbasePath,
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      method: "POST",
      success: res => {
        console.log('小程序連接成功:', res);
      },
      fail: err => {
        console.log('出現錯誤啦!!' + err);
        wx.showToast({
          title: '網絡異常!',
        })
      }
    })

    this.webSokcketMethods();

  },

//監聽指令
  webSokcketMethods(e){
    let that = this;
    sotk.onOpen(res => {
      socketOpen = true;
      console.log('監聽 WebSocket 連接打開事件。', res);
    })
    sotk.onClose(onClose => {
      console.log('監聽 WebSocket 連接關閉事件。', onClose)
      socketOpen = false;
    })
    sotk.onError(onError => {
      console.log('監聽 WebSocket 錯誤。錯誤信息', onError)
      socketOpen = false
    })

    sotk.onMessage(onMessage => {
      var data = JSON.parse(onMessage.data);
      console.log('監聽WebSocket接受到服務器的消息事件。服務器返回的消息',data);
     
    })
   
  },

//發送消息
  sendSocketMessage(msg) {
    let that = this;
    if (socketOpen){
      console.log('通過 WebSocket 連接發送數據', JSON.stringify(msg))
      sotk.send({
        data: JSON.stringify(msg)
      }, function (res) {
        console.log('已發送', res)
      })
    }
    
  },
 //關閉連接
  closeWebsocket(str){
    if (socketOpen) {
      sotk.close(
        {
          code: "1000",
          reason: str,
          success: function () {
            console.log("成功關閉websocket連接");
          }
        }
      )
    }
  },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM