国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序websocket的使用

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序websocket的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??感謝大家的點(diǎn)贊和轉(zhuǎn)發(fā),歡迎大家關(guān)注本人的博客。試用期指導(dǎo),項(xiàng)目開(kāi)發(fā),簡(jiǎn)歷優(yōu)化,畢業(yè)設(shè)計(jì)/論文,歡迎添加本人微信。

?新人作者,歡迎關(guān)注和收藏????????

小程序 使用websocket,微信小程序,微信小程序,websocket,小程序

微信小程序中使用websocket分為兩步:

1、現(xiàn)在微信公眾平臺(tái)的開(kāi)發(fā)者工具中配置socket的域名

小程序 使用websocket,微信小程序,微信小程序,websocket,小程序

?2、開(kāi)始編寫(xiě)使用websocket的業(yè)務(wù)代碼

?2.1發(fā)起請(qǐng)求建立一個(gè)socket連接

let SocketTask = wx.connectSocket({
      url: 'wss://app-test.kidsplace.cn:18887',
      success: function (res) {
        console.log(res)
        that.setData({
          heartbeatfail: 0
        })
        that.setData({
          socketConect: true
        })
      },
      fail: function (err) {
        console.log(err)
      }
    })

這里是通過(guò)微信自帶的一個(gè)wx.connectSocket函數(shù)來(lái)傳入響應(yīng)的socket域名和端口號(hào)來(lái)建立連接的,注意這個(gè)函數(shù)會(huì)返回一個(gè)SocketTask對(duì)象,里面包含了socket任務(wù)的信息,可以用來(lái)管理sock任務(wù)。一個(gè)微信小程序頁(yè)面最多同時(shí)建立五條socket任務(wù)。?

?2.2監(jiān)聽(tīng)socket連接建立,向服務(wù)器發(fā)送身份認(rèn)證協(xié)議

SocketTask.onOpen((res) => {
     console.log(res)
     // that.startHeartBeat(that.data.socketTask[0])
     SocketTask.send({
       //向服務(wù)器發(fā)送消息
       data: JSON.stringify(params),
       success: function (res) {
         console.log(res, '發(fā)送成功了')
          
       },
       fail: function (err) {
         console.log(err, '發(fā)送失敗了')
       }
     })
   })

這里通過(guò)SocketTask.onOpen來(lái)監(jiān)聽(tīng)socket是否建立成功,如果建立成功在監(jiān)聽(tīng)的回調(diào)中調(diào)用SocketTask.send()方法向服務(wù)器發(fā)送身份認(rèn)證的報(bào)文,并且監(jiān)聽(tīng)是否發(fā)送成功。?

?2.3身份認(rèn)證成功后向服務(wù)器發(fā)送綁卡信息(本次業(yè)務(wù)需求),并且監(jiān)聽(tīng)服務(wù)器發(fā)送的報(bào)文。

SocketTask.onMessage((res) => {
          //監(jiān)聽(tīng) WebSocket 接受到服務(wù)器的消息事件
          let data = JSON.parse(res.data)
          console.log(data, '服務(wù)器的消息')
          if (data.code == '200' && data.success && data.msgType == 'auth_ack') {
            let data = {
              type: "bindCard",
              cardId: that.data.cards[0].LeaguerCode,
              BusinessID:that.data.cards[0].BusinessID,
              phone: sessionService.get('userInfo').member.phone,
              memberId:  sessionService.get('userInfo').member.id,
              BusinessName:that.data.cards[0].BusinessName,//門(mén)店名稱(chēng)
              baseId:that.data.cards[0].LeaguerBaseID
            }
            SocketTask.send({
              data: JSON.stringify(data),
              success: function (res) {
                console.log(res, '綁卡認(rèn)證信息發(fā)送成功')
              }
            })
          }
        })

這里調(diào)用SocketTask.onMessage()來(lái)監(jiān)聽(tīng)服務(wù)發(fā)送的報(bào)文,成功的回調(diào)中會(huì)返回一個(gè)data用來(lái)存儲(chǔ)服務(wù)發(fā)送的報(bào)文。?

2.4在離開(kāi)頁(yè)面的時(shí)候關(guān)閉socket

onUnload: function () {
    let that = this
    this.data.socketTask[0].close({
      success: function (res) {
        console.log(res, '離開(kāi)頁(yè)面關(guān)閉socket')
        that.stopHeartBeat() //離開(kāi)頁(yè)面并關(guān)閉socket之后停止心跳
      },
      fail: function (err) {
        console.log(err, '關(guān)閉socket失敗了')
      }
    })
}

注意:小程序離開(kāi)原生頁(yè)面會(huì)調(diào)用onUnload生命周期,也就是銷(xiāo)毀該頁(yè)面的頁(yè)面棧,而進(jìn)入web-view頁(yè)面則會(huì)調(diào)用onHide生命周期,因?yàn)閣eb-view相當(dāng)于蓋在原生頁(yè)面上的組件,因此銷(xiāo)毀socket需要注意不同的場(chǎng)景調(diào)用不同的生命周期鉤子

總結(jié):經(jīng)過(guò)這樣幾個(gè)步驟跟服務(wù)器建立一個(gè)基本的websocket連接就算是完成了。

注意:SocketTask.onOpen和ocketTask.onMessage都是自動(dòng)監(jiān)聽(tīng)的因此調(diào)用一次即可

在完成websocket連接的建立之后還需要建立一個(gè)心跳連接,心跳連接的作用是用來(lái)監(jiān)聽(tīng)socket是否斷開(kāi)連接,如果斷開(kāi)連接需要進(jìn)行自動(dòng)重連。

startHeartBeat() {
    this.setData({
      heart: true
    })
    this.heartbeat()
  },
heartbeat() {
   let that = this
   if (!this.data.heart) {
     return
   }
   let data = {
     type: 'heartBeat',
     msg: 'this is heatbeat'
   }
   this.data.socketTask[0].send({
     data: JSON.stringify(data),
     success: function (res) {
       console.log(res, '心跳成功,連接正常')
       if (that.data.heart) {
         that.data.heartBeatTimeout = setTimeout(() => {
           that.heartbeat(that.data.socketTask[0])
         }, that.data.timeout)
       }
     },
     fail: function (err) {
       that.data.socketTask[0].onClose((err) => {
         console.log(err, '關(guān)閉的原因')
       })
       console.log(err, '心跳失敗,連接中斷')
       if (that.data.heartbeatfail > 2) {
         that.setData({
           socketTask: []
         })
         that.socekt()
       }
       if (that.data.heart) {
         that.data.heartBeatTimeout = setTimeout(() => {
           that.heartbeat(that.data.socketTask[0])
         }, that.data.timeout)
       }
       that.setData({
         heartbeatfail: that.data.heartbeatfail + 1
       })
     }
   })
 },

?這個(gè)心跳函數(shù)的主要邏輯就是在socket建立之后向服務(wù)端發(fā)送一個(gè)心跳消息,如果發(fā)送成功了就證明socket連接正常,設(shè)置一個(gè)定時(shí)器每隔一段時(shí)間就發(fā)送一次心跳,如果失敗了也設(shè)置一個(gè)定時(shí)器每隔一段時(shí)間在發(fā)一次心跳,并且記錄失敗的次數(shù),如果失敗的次數(shù)超過(guò)上限,就會(huì)將socketTask的任務(wù)數(shù)組置空,然后停止心跳,重新執(zhí)行socket()方法建立連接跟心跳,主要是一種遞歸的思想。

這樣一個(gè)具有心跳機(jī)制的socket連接就完成建立了

??感謝大家的點(diǎn)贊和轉(zhuǎn)發(fā),歡迎大家關(guān)注本人的博客。試用期指導(dǎo),項(xiàng)目開(kāi)發(fā),簡(jiǎn)歷優(yōu)化,畢業(yè)設(shè)計(jì)/論文,歡迎添加本人微信。

?新人作者,歡迎關(guān)注和收藏????????

小程序 使用websocket,微信小程序,微信小程序,websocket,小程序

?覺(jué)得作者寫(xiě)的不錯(cuò)或者心情愉悅的老板也可以投幣打賞,感謝觀看,希望能給大家?guī)?lái)幫助?

?小程序 使用websocket,微信小程序,微信小程序,websocket,小程序文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-848497.html

到了這里,關(guān)于微信小程序websocket的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp vue3 微信小程序 項(xiàng)目中使用 websocet、微信小程序真機(jī)調(diào)試 websocket 報(bào)錯(cuò) errMsg: “Invalid HTTP status.“

    uniapp-websocket官方文檔 注意點(diǎn):需要在確定建立連接后才能去發(fā)送數(shù)據(jù) 這個(gè)錯(cuò)誤通常是因?yàn)樾〕绦?WebSocket 請(qǐng)求的地址沒(méi)有配置為 HTTPS,而是使用了 HTTP,因此需要注意以下幾點(diǎn): 小程序開(kāi)發(fā)者工具可以支持使用 ws:// 前綴的 WebSocket 地址,但在真機(jī)上會(huì)因?yàn)椴话踩脑蚨鵁o(wú)

    2024年01月17日
    瀏覽(45)
  • 【微信小程序】使用 WebSocket 進(jìn)行訂閱操作、連接監(jiān)聽(tīng)、接收到服務(wù)器的消息事件

    在微信小程序中使用 WebSocket 進(jìn)行訂閱操作,可以通過(guò) wx.connectSocket 方法創(chuàng)建 WebSocket 連接,并通過(guò)相關(guān)事件處理函數(shù)進(jìn)行訂閱和數(shù)據(jù)處理。 以下是一個(gè)示例代碼,演示了在微信小程序中使用 WebSocket 進(jìn)行訂閱: 在上述代碼中,我們首先使用 wx.connectSocket 方法創(chuàng)建 WebSocket 連接

    2024年02月16日
    瀏覽(49)
  • 微信小程序如何使用原生Websocket api與Asp.Net Core SignalR 通信

    微信小程序如何使用原生Websocket api與Asp.Net Core SignalR 通信

    如題,這可能算是.net 做小程序的服務(wù)端時(shí),繞不開(kāi)的一個(gè)問(wèn)題,老生常談了。同樣的問(wèn)題,我記得我2018/19年的一個(gè)項(xiàng)目的解決方案是: 修改官方的SignalR.js的客戶(hù)端 :把里面用到瀏覽器的Websocket改成微信小程序的官方api的。目前網(wǎng)上也有不少這樣的方案,已經(jīng)改好開(kāi)源了;

    2024年02月09日
    瀏覽(39)
  • 微信小程序全局websocket

    全篇干貨無(wú)廢話 實(shí)現(xiàn)微信小程序全局websocket 含掉線重連,心跳?;畹葯C(jī)制,可做參考示例 app.js

    2024年02月09日
    瀏覽(23)
  • 微信小程序如何連接websocket

    在需要啟用的地方調(diào)用app.js中的openScoket()函數(shù);停用的地方調(diào)用closeSocket()函數(shù) callback函數(shù)在各頁(yè)面中的應(yīng)用方法

    2024年02月15日
    瀏覽(23)
  • 微信小程序 WebSocket 通信 —— 在線聊天

    微信小程序 WebSocket 通信 —— 在線聊天

    ?? ? ? ??* 源碼已經(jīng)上傳到資源處,需要的話點(diǎn)擊跳轉(zhuǎn)下載 |? 源碼下載 ????????在Node欄目就講到了Socket通信的內(nèi)容,使用Node實(shí)現(xiàn)Socke通信,還使用兩個(gè)流行的WebSocket 庫(kù),ws 和 socket.io,在小程序中的WebSocket接口和HTML5的WebSocket基本相同,可以實(shí)現(xiàn)瀏覽器與服務(wù)器之間的

    2024年02月01日
    瀏覽(20)
  • springboot+websocket+微信小程序?qū)崿F(xiàn)評(píng)論區(qū)功能

    1. 什么是WebSocket? WebSocket 是 HTML5 一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器 全雙工通信 ,能更好的節(jié)省服務(wù)器資源和帶寬并達(dá)到實(shí)時(shí)通訊,它建立在 TCP 之上,同 HTTP 一樣通過(guò) TCP 來(lái)傳輸數(shù)據(jù),但是它和 HTTP 最大不同是: WebSocket 是一種 雙向通信協(xié)議 ,在建立連接后,WebSo

    2024年04月16日
    瀏覽(164)
  • 微信小程序 | 基于小程序+Java+WebSocket實(shí)現(xiàn)實(shí)時(shí)聊天功能

    微信小程序 | 基于小程序+Java+WebSocket實(shí)現(xiàn)實(shí)時(shí)聊天功能

    此文主要實(shí)現(xiàn)在小程序內(nèi)聊天對(duì)話功能,使用Java作為后端語(yǔ)言進(jìn)行支持,界面友好,開(kāi)發(fā)簡(jiǎn)單。 2.1、注冊(cè)微信公眾平臺(tái)賬號(hào)。 2.2、下載安裝IntelliJ IDEA(后端語(yǔ)言開(kāi)發(fā)工具),Mysql數(shù)據(jù)庫(kù),微信Web開(kāi)發(fā)者工具。 1.創(chuàng)建maven project 先創(chuàng)建一個(gè)名為SpringBootDemo的項(xiàng)目,選擇【New Proje

    2024年02月02日
    瀏覽(35)
  • 微信小程序WebSocket實(shí)現(xiàn)stream流式聊天對(duì)話功能

    微信小程序WebSocket實(shí)現(xiàn)stream流式聊天對(duì)話功能

    要在微信小程序?qū)崿F(xiàn)聊天對(duì)話功能,回話是流式應(yīng)答,這里使用了WebSocket技術(shù)。WebSocket大家應(yīng)該都很熟悉,使用wx.connectSocket就可以了。這里可能需要注意下的是流式應(yīng)答,后端如何發(fā)送,前端如何接收。直接上代碼: 可以掃碼體驗(yàn): 后端關(guān)鍵代碼: 小程序ts代碼: 可以掃碼

    2024年04月10日
    瀏覽(29)
  • SpringBoot實(shí)現(xiàn)Websocket聊天交友微信小程序(一)

    SpringBoot實(shí)現(xiàn)Websocket聊天交友微信小程序(一)

    記錄一下我開(kāi)發(fā)一個(gè)交友微信小程序并且上線運(yùn)營(yíng)的心得體會(huì)。 2022年10月1日上線的,到目前終于實(shí)現(xiàn)每天收益300左右。 界面比較簡(jiǎn)潔,功能有動(dòng)態(tài),動(dòng)態(tài)可以選擇話題,相冊(cè),相冊(cè)可以設(shè)置看廣告解鎖,私信,私信可以發(fā)圖片,發(fā)語(yǔ)音。還有會(huì)員功能。前端用的uniapp,UI框

    2024年02月03日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包