websocket的連接問題

在小程序中,通常來說websocket的連接直接按照官方微信開放文檔來做就好,不是什么難點(diǎn)。但是當(dāng)小程序不僅一個socket連接時,就會出現(xiàn)一些問題:
比如,我一開始寫了一個websocket連接,用來發(fā)送圖片,但是后來,項(xiàng)目開發(fā)伙伴在上面增加了mqtt部分,在這種時候,一旦運(yùn)行微信小程序就會出現(xiàn)一些問題--比如我這里遇到的問題就是它連接到server端之后就自己斷開,無法發(fā)送/接受數(shù)據(jù)。
一開始是這樣寫的:

    wx.connectSocket({
      url: 'ws://(...)',
      success(){
        console.log("成功")
    },
      fail(){
          console.log("失敗")
      },
      complete(){
          console.log("完成");
      }
    })
   wx.onSocketOpen(function (res) {
      console.log('WebSocket連接已打開!') 
      wx.sendSocketMessage({
        data:'HelloWorld:'
      })
    })
    wx.onSocketError(function(res){
      console.log('WebSocket連接打開失敗,請檢查!')
    })
    wx.onSocketMessage(function (res) {
      console.log(res)
    })
    wx.onSocketClose(function (res) {
      console.log('WebSocket連接已關(guān)閉!')
    })
  },

解決辦法:

var pagethis = this;//存一下“this”
    console.log('準(zhǔn)備連接')
    pagethis.data.localSocket=wx.connectSocket({
      url: '...',
    }),
    pagethis.data.localSocket.onOpen(function(res){
      console.log('WebSocket連接已打開!') 
      if (pagethis.data.localSocket.readyState === 1){
        pagethis.data.localSocket.send({
          data: 'hw'
        })
      }
    }),
    
    pagethis.data.localSocket.onMessage(function(res){
      console.log(res)
      pagethis.data.localSocket.close()
    })
   //監(jiān)聽該次websocket是否關(guān)閉
    pagethis.data.localSocket.onClose(function (res) {
      console.log('WebSocket連接已關(guān)閉!')
    })

這樣修改之后,這里的websocket面對的就只是我們要連接的websocket了,而并非是這個這個小程序要面對的所有socket。
而且,在這里我在注意到一點(diǎn),wx.closeSocket()[修改過的程序中的pagethis.data.localSocket.close()函數(shù)]函數(shù)不能拎出來用,否則會有警告/報(bào)錯,因?yàn)閱为?dú)拎出來后,要close就得先確認(rèn)open,一般加在發(fā)送函數(shù)或者接收數(shù)據(jù)函數(shù)那里。


close警告.png

如何確認(rèn)小程序是連接上,然后出現(xiàn)問題;而不是一開始就沒有連接上-->
查看網(wǎng)絡(luò)請求:


network.jpg

查看左側(cè)打馬賽克部分有無出現(xiàn)目標(biāo)地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容