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

WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制

這篇具有很好參考價(jià)值的文章主要介紹了WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

WebSocket應(yīng)用部署到生產(chǎn)環(huán)境,我們除了會(huì)碰到因?yàn)榻?jīng)過(guò)代理服務(wù)器無(wú)法連接的問題(注:該問題可以通過(guò)搭建WSS來(lái)解決,具體配置請(qǐng)看?WebSocket實(shí)戰(zhàn)之四WSS配置?),另外一個(gè)問題就是外網(wǎng)環(huán)境不穩(wěn)定經(jīng)常會(huì)斷開或者服務(wù)器重啟或者網(wǎng)絡(luò)中間服務(wù)器當(dāng)發(fā)現(xiàn)一個(gè)長(zhǎng)連接長(zhǎng)時(shí)間沒有傳輸數(shù)據(jù)會(huì)斷開,今天我們來(lái)了解一下基于WebSocket如何做心跳重連。

二、PingPong

關(guān)于心跳包的格式,WebSocket協(xié)議RFC6455中有定義控制幀的格式.

Ping幀包含一個(gè)操作碼? 0x9,Pong幀包含一個(gè)操作碼?0xA。

客戶端發(fā)送Ping幀,服務(wù)端收到Ping幀后回一個(gè)響應(yīng)Pong幀。

但是JavaScript 并沒有API支持Ping、Pong幀,而后端JavaEE是有PingPong的支持,這是很奇怪的事情,那我們就通過(guò)自定義消息來(lái)定義心跳包。

三、一個(gè)包含心跳包服務(wù)端推送較完整的例子

1、SpringBoot端代碼

對(duì)?WebSocket實(shí)戰(zhàn)之五JSR356?這篇文章WebSocketServer類進(jìn)行修改,配置一個(gè)定時(shí)器,每隔10秒定時(shí)發(fā)送當(dāng)前時(shí)間,并且在onMessage事件中加上接收心跳包以及發(fā)送心跳包的代碼,服務(wù)端對(duì)心跳處理相對(duì)簡(jiǎn)單。

WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制,通訊協(xié)議,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制,通訊協(xié)議,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

注:需要使用一個(gè)容器將請(qǐng)求的Session保存起來(lái)并且使用static,否則在發(fā)送信息時(shí)拿不到原來(lái)的那個(gè)session對(duì)象。

2、前端JavaScript代碼

WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制,通訊協(xié)議,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制,通訊協(xié)議,websocket,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

說(shuō)明:

1、所有異常都加上重連代碼,包含創(chuàng)建WebSocket連接、onClose事件、onError事件。

2、在onOpen和onMessage啟動(dòng)心跳包發(fā)送。

3、心跳包發(fā)送方法設(shè)置兩個(gè)延遲器一個(gè)用于發(fā)送心跳包,另外一個(gè)用于當(dāng)服務(wù)端超時(shí)(如果服務(wù)端未超時(shí)會(huì)發(fā)送響應(yīng)心跳包然后重新調(diào)用heartCheck將兩個(gè)延遲器清空)關(guān)閉WebSocket連接。

4、重連代碼時(shí)序:當(dāng)服務(wù)端Down掉或網(wǎng)絡(luò)斷開超過(guò)一定時(shí)間serverTimeoutObj這個(gè)延遲器會(huì)執(zhí)行,然后調(diào)用ws.close()關(guān)閉連接并且觸發(fā)onClose事件,在onClose事件中會(huì)調(diào)用reconnect方法,而reconnect又會(huì)調(diào)用createWebSocket方法,createWebSocket去創(chuàng)建WebSocket連接,當(dāng)創(chuàng)建異常時(shí)又會(huì)再調(diào)用reconnect,一直到能連接得上。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729320.html

到了這里,關(guān)于WebSocket實(shí)戰(zhàn)之六心跳重連機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • Flutter:WebSocket封裝-實(shí)現(xiàn)心跳、重連機(jī)制

    前言Permalink Flutter簡(jiǎn)介 Flutter 是 Google推出并開源的移動(dòng)應(yīng)用開發(fā)框架,主打跨平臺(tái)、高保真、高性能。開發(fā)者可以通過(guò) Dart語(yǔ)言開發(fā) App,一套代碼同時(shí)運(yùn)行在 iOS 和 Android平臺(tái)。 Flutter提供了豐富的組件、接口,開發(fā)者可以很快地為 Flutter添加 native擴(kuò)展。同時(shí) Flutter還使用 Nat

    2024年02月10日
    瀏覽(35)
  • websocket的基礎(chǔ)使用,心跳機(jī)制,斷線重連

    websocket的基礎(chǔ)使用,心跳機(jī)制,斷線重連

    websoket出現(xiàn)的原因: 傳統(tǒng)的http請(qǐng)求只能是由前端向后臺(tái)發(fā)送一個(gè)請(qǐng)求,然后后臺(tái)把結(jié)果返回給前端,前端再進(jìn)行展示。這里就暴露了一個(gè)問題,就是通信只能由前端發(fā)起,而后臺(tái)無(wú)法主動(dòng)與前端通信。而websoket的出現(xiàn)就是為了解決這個(gè)問題,讓前端可以主動(dòng)聯(lián)系后臺(tái),后臺(tái)也

    2024年02月06日
    瀏覽(26)
  • websocket前端封裝代碼,心跳機(jī)制斷線重連

    websocket前端封裝代碼,心跳機(jī)制斷線重連

    websocket是一種全雙工通信長(zhǎng)鏈接,大多用來(lái)實(shí)現(xiàn)及時(shí)通訊,數(shù)據(jù)實(shí)時(shí)性要求較為高的地方,在websoket未出現(xiàn)的時(shí)候前端使用的setInterval輪訓(xùn)進(jìn)行數(shù)據(jù)更新的,在那些對(duì)于數(shù)據(jù)實(shí)時(shí)性要求不高地方我們?nèi)钥梢允褂?輪訓(xùn)。 (1)建立在 TCP 協(xié)議之上,服務(wù)器端的實(shí)現(xiàn)比較容易。 (

    2024年02月11日
    瀏覽(33)
  • uniapp使用WebSocket斷線,心跳重連機(jī)制

    提示:我們?cè)谑褂肳ebSocket,經(jīng)常會(huì)遇到有的時(shí)候給別人發(fā)消息,別人會(huì)接收不到,這個(gè)時(shí)候就有可能是WebSocket斷線了,所以這個(gè)時(shí)候心跳包就出現(xiàn)了 提示:可直接使用,記得把對(duì)應(yīng)地址替換一下

    2024年04月12日
    瀏覽(31)
  • websocket斷線重連&&心跳檢測(cè)

    websocket斷線重連&&心跳檢測(cè)

    封裝websocket 實(shí)現(xiàn)斷線重連跟心態(tài)檢測(cè),使用的typeScript去封裝 在nodejs 安裝ws庫(kù) 代碼如下(示例): ?服務(wù)端實(shí)現(xiàn)ws 創(chuàng)建一個(gè)server.js 文件 運(yùn)行ws服務(wù) ? node .server.js? 客戶端實(shí)現(xiàn)websocket 創(chuàng)建一個(gè)socket.ts 文件 vue 頁(yè)面使用 斷開ws服務(wù) 斷線? 啟動(dòng)服務(wù)后 自動(dòng)重連

    2024年01月19日
    瀏覽(26)
  • websocket超時(shí)重連、心跳檢測(cè)

    在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議,可以實(shí)現(xiàn)服務(wù)端和客戶端雙向推送信息的協(xié)議。我們?cè)谑褂脀ebscoket通信時(shí)必須要注意的問題超時(shí)重連和心跳檢測(cè)。 超時(shí)重連:當(dāng)出現(xiàn)錯(cuò)誤時(shí)客戶端嘗試重新連接websocket。 心跳檢測(cè):客戶端長(zhǎng)時(shí)間沒接收到服務(wù)端消息,就向服務(wù)端發(fā)送

    2024年02月11日
    瀏覽(21)
  • Vue 2 中 WebSocket 模塊實(shí)現(xiàn)與應(yīng)用(包含心跳檢測(cè)、自動(dòng)重連)

    Vue 2 中 WebSocket 模塊實(shí)現(xiàn)與應(yīng)用(包含心跳檢測(cè)、自動(dòng)重連)

    WebSocket 技術(shù)是一種在 Web 開發(fā)中常用的實(shí)時(shí)通信方式,它允許客戶端和服務(wù)器之間建立持久性的雙向連接,以便實(shí)時(shí)地傳輸數(shù)據(jù)。在 Vue.js 項(xiàng)目中,使用 WebSocket 可以輕松實(shí)現(xiàn)實(shí)時(shí)消息推送、即時(shí)通訊等功能。在這篇博客中,我們將介紹一個(gè)基于 Vue.js 的 WebSocket 模塊的實(shí)現(xiàn),

    2024年02月03日
    瀏覽(55)
  • WebSocket心跳重連在微信小程序中的實(shí)現(xiàn)與服務(wù)器端

    WebSocket技術(shù)是一種在瀏覽器和服務(wù)器之間建立持久化連接的通信協(xié)議。在微信小程序中,通過(guò)WebSocket可以實(shí)現(xiàn)實(shí)時(shí)的雙向通信。然而,由于網(wǎng)絡(luò)等各種因素的不穩(wěn)定性,WebSocket連接可能會(huì)出現(xiàn)斷開的情況。為了保證連接的可靠性,我們可以通過(guò)心跳機(jī)制和重連機(jī)制來(lái)處理Web

    2024年03月18日
    瀏覽(30)
  • mosquitto心跳和網(wǎng)絡(luò)重連機(jī)制(基于MQTT協(xié)議)

    在網(wǎng)絡(luò)通信中,心跳(Heartbeat)指的是一種周期性的消息,用于維持通信連接的活動(dòng)狀態(tài)。心跳包的主要作用是檢測(cè)連接是否處于活動(dòng)狀態(tài),及時(shí)發(fā)現(xiàn)連接異常并重新恢復(fù)連接,維護(hù)網(wǎng)絡(luò)通信的穩(wěn)定性和可靠性。 MQTT(Message Queuing Telemetry Transport)是一種輕量級(jí)、開放式的消息

    2024年02月03日
    瀏覽(25)
  • WebSocket心跳機(jī)制

    WebSocket是HTML5開始提供的一種瀏覽器與服務(wù)器進(jìn)行全雙工通訊的網(wǎng)絡(luò)技術(shù),屬于應(yīng)用層協(xié)議。 WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。 1、創(chuàng)建webSocket 2、websocket事件 事件 事件處理程序 描述 open Socket.onopen 連接建立時(shí)觸發(fā)

    2024年02月15日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包