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

websocket實時通訊和socket.io實時通信庫的使用;心跳機制與斷線重連

這篇具有很好參考價值的文章主要介紹了websocket實時通訊和socket.io實時通信庫的使用;心跳機制與斷線重連。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

websocket

https://zh.javascript.info/websocket

WebSocket 是一種網(wǎng)絡(luò)通信協(xié)議,就類似于 HTTP 也是一種通信協(xié)議。

為什么需要 WebSocket?

因為 HTTP 協(xié)議有一個缺陷:通信只能由客戶端發(fā)起。

<script>
    // 創(chuàng)建ws實例,建立連接  (ws://121.40.165.18:8800  有廣告)
    var ws = new WebSocket("wss://javascript.info/article/websocket/demo/hello");

    // 連接成功事件
    ws.onopen = function(evt) {
        console.log("Connection open ...");
        // 發(fā)送消息
        ws.send("Hello WebSockets!");
    };
    // 接受消息事件
    ws.onmessage = function(evt) {
        console.log("Received Message: " + evt.data);
        // 關(guān)閉連接  
        ws.close();
    };
    // 關(guān)閉連接事件
    ws.onclose = function(evt) {
        console.log("Connection closed.");
    };
</script>

代碼解析:

  1. 創(chuàng)建WebSocket實例:通過new WebSocket()創(chuàng)建一個WebSocket實例。在括號中傳入服務(wù)器的URL,該URL指定了WebSocket服務(wù)器的地址和端口。

  2. 連接成功事件:當WebSocket連接成功建立時,onopen事件被觸發(fā),此時會執(zhí)行指定的回調(diào)函數(shù)。在這個例子中,回調(diào)函數(shù)會向服務(wù)器發(fā)送一條消息,內(nèi)容為"Hello WebSockets!",通過ws.send()方法發(fā)送。

  3. 接收消息事件:當接收到服務(wù)器發(fā)送的消息時,onmessage事件被觸發(fā),執(zhí)行指定的回調(diào)函數(shù)。在這個例子中,回調(diào)函數(shù)會將接收到的消息打印到控制臺。

  4. 關(guān)閉連接事件:當WebSocket連接關(guān)閉時,onclose事件被觸發(fā),執(zhí)行指定的回調(diào)函數(shù)。在這個例子中,回調(diào)函數(shù)會打印出"Connection closed."。

socket.io使用

socket.io 是什么?

https://socket.io/

socket.io 是一個基于 WebSocket 的 CS(客戶端-服務(wù)端)的實時通信庫,使用它可以在后端提供一個即時通訊服務(wù),它提供的也有一個 JS 庫,在前端可以去鏈接后端 socket.io 創(chuàng)建的服務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-566127.html

1.裝包

npm install socket.io 

2.使用

如何建立連接?
import io from 'socket.io-client'
// 參數(shù)1:不傳默認是當前服務(wù)域名,開發(fā)中傳入服務(wù)器地址
// 參數(shù)2:配置參數(shù),根據(jù)需要再來介紹
const socket = io()
如何確定連接成功?
socket.on('connect', () => {
    // 建立連接成功
})
如何發(fā)送消息?
// chat message 發(fā)送消息事件,由后臺約定,可變
socket.emit('chat message', '消息內(nèi)容')
如何接收消息?
// chat message 接收消息事件,由后臺約定,可變
socket.on('chat message', (ev) => {
    // ev 是服務(wù)器發(fā)送的消息
})
如何關(guān)閉連接?
// 離開組件需要使用
socket.close()

心跳機制與斷線重連

const socketURL = 'ws://xxxx.com/' // 連接地址
let ws = null    // websocket實例
let lockReconnect = false; // websocket連接狀態(tài),避免重復連接
let reconnectTimer = 2000  // 斷開后2s自動重連
 
function setWebsocket() {
  ws = new WebSocket(socketURL)
  ws.addEventListener('open', () => {
    alert('服務(wù)連接成功');
  })
  ws.addEventListener('close', () => {
    alert('服務(wù)已斷開');
    reconnect()
  })
  ws.addEventListener('error', () => {
    alert('服務(wù)發(fā)生異常');
    reconnect()
  })
  ws.addEventListener('message', event => {
    alert('收到消息:', event.data)
  })
}
 
// 重連
function reconnect() {
  if (lockReconnect) return;
  lockReconnect = true;
  setTimeout(function () {
    setWebsocket();
    lockReconnect = false;
  }, reconnectTimer);
}
 
// 頁面關(guān)閉斷開socket連接
window.onbeforeunload = function() {
  ws.close()
  return;
}
 
// 向外暴露
export {
    ws
}

到了這里,關(guān)于websocket實時通訊和socket.io實時通信庫的使用;心跳機制與斷線重連的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring Boot進階(49):實時通信不再是夢想,SpringBoot+WebSocket助你輕松實現(xiàn)前后端即時通訊!

    Spring Boot進階(49):實時通信不再是夢想,SpringBoot+WebSocket助你輕松實現(xiàn)前后端即時通訊!

    ????????在上一期,我對WebSocket進行了基礎(chǔ)及理論知識普及學習,WebSocket是一種基于TCP協(xié)議實現(xiàn)的全雙工通信協(xié)議,使用它可以實現(xiàn)實時通信,不必擔心HTTP協(xié)議的短連接問題。Spring Boot作為一款微服務(wù)框架,也提供了輕量級的WebSocket集成支持,本文將介紹如何在Spring Boot項

    2024年02月11日
    瀏覽(21)
  • 【IPC通信--socket套接字--心跳包】

    隨著網(wǎng)絡(luò)通信技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)通信已成為我們?nèi)粘9ぷ骱蜕钪胁豢苫蛉钡囊徊糠?。但是在使用網(wǎng)絡(luò)通信的過程中,時常會遇到網(wǎng)絡(luò)延遲、丟包等問題,這些問題不僅影響我們的工作和生活效率,也會給我們的網(wǎng)絡(luò)帶來一定的風險和安全隱患。為了解決這些問題,Soc

    2024年01月22日
    瀏覽(18)
  • WebSocket之socket.io的基本使用

    WebSocket之socket.io的基本使用

    ?Socket.IO 是一個WebSocket庫,可以在客戶端和服務(wù)器之間實現(xiàn)低延遲、雙向和基于事件的通信。它建立在?WebSocket?協(xié)議之上,并提供額外的保證,例如回退到 HTTP 長輪詢或自動重新連接。 基本使用 安裝socket.io yarn add?socket.io ?新建js文件與html文件內(nèi)容如下 這個時候啟動node后,

    2024年02月08日
    瀏覽(20)
  • 前端加springboot實現(xiàn)Web Socket連接通訊以及測試流程(包括后端實現(xiàn)心跳檢測)

    前端加springboot實現(xiàn)Web Socket連接通訊以及測試流程(包括后端實現(xiàn)心跳檢測)

    寫這個項目主要是有有個項目需要后端有數(shù)據(jù)實話返回前端,一開始采用前端輪詢的方式,后面覺得及時性上有些不行,然后改為使用websocket ,具體實現(xiàn)demo以及測試流程發(fā)出來提供交流學習, WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被

    2024年02月11日
    瀏覽(27)
  • 【W(wǎng)ebSocket】前端使用WebSocket實時通信

    【W(wǎng)ebSocket】前端使用WebSocket實時通信

    最近寫項目,需要實現(xiàn)消息通知和實時聊天的功能,就去了解了一些關(guān)于websocket的知識,總結(jié)如下。 WebSocket 是一種在 Web 應(yīng)用中實現(xiàn)實時通信的協(xié)議。與傳統(tǒng)的 HTTP 請求不同,WebSocket 連接在客戶端和服務(wù)器之間建立一個 持久性 的 雙向通信管道 ,使得數(shù)據(jù)可以在連接打開后

    2024年02月11日
    瀏覽(23)
  • webSocket及使用webSocket實現(xiàn)實時聊天通信

    webSocket及使用webSocket實現(xiàn)實時聊天通信

    webSocket在開始的時候依舊使用的是http協(xié)議,只不過后面保持tcp持久鏈接,是一種全雙工通信。webSockets和http很像,它的請求url用的是ws、wss,對應(yīng)http、https 初始化 npm init -y 安裝ws依賴 npm i --save ws 寫服務(wù)器代碼 服務(wù)器啟動 node server.js 配置前端代碼,即告訴瀏覽器這個請求不要

    2023年04月11日
    瀏覽(28)
  • nodejs實現(xiàn)前后端websocket通信+心跳示例

    nodejs后端代碼? server.js 直接在文件所在目錄打開cmd窗口,啟動服務(wù): node server.js 瀏覽器端? index.html 在本地直接運行瀏覽器即可! 如果有幫助,就點個贊再走 ^? ^ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    2024年02月13日
    瀏覽(22)
  • 【iOS】—— 實現(xiàn)WebSocket發(fā)送消息(SocketRocket第三方庫的使用和解析)

    【iOS】—— 實現(xiàn)WebSocket發(fā)送消息(SocketRocket第三方庫的使用和解析)

    偶然之間了解到了利用WebSocket實現(xiàn)后端和前端的相互發(fā)送消息,就查了查在iOS里這個東西該怎么寫,用舍友寫的接口簡單實現(xiàn)了兩個用戶的通信。 WebSocket 是一種在 Web 應(yīng)用程序中實現(xiàn)雙向通信的協(xié)議。它允許客戶端和服務(wù)器之間建立一個持久性的連接,以便可以在任何時間點

    2024年02月15日
    瀏覽(23)
  • 使用 Node.js 和 Socket.io 構(gòu)建實時聊天應(yīng)用程序

    主要是通過簡易聊天室熟練掌握 Socket.io 相關(guān)方法和運行的過程。 Socket.io 在進行實現(xiàn)簡易實時聊天室之前,我們先梳理一下我們需要的功能和流程。 所需功能: 1、告知用戶已經(jīng)連接到聊天室 2、自己發(fā)送時,頁面展示對應(yīng)的消息展示,而對方看的到信息是誰發(fā)送了什么 3、

    2024年02月13日
    瀏覽(30)
  • 進度變動實時通知-使用SocketIO實現(xiàn)前后端的通信(基于WebSocket的實時通信庫)

    進度變動實時通知-使用SocketIO實現(xiàn)前后端的通信(基于WebSocket的實時通信庫)

    最近在接觸的一個項目,將PDF上傳到項目里,通過調(diào)用OCR云服務(wù)把PDF里的表格數(shù)據(jù)識別出來。在此過程中,前后端需要實時通信,對識別數(shù)據(jù)進行“進度跟蹤”。因此我們采用SocketIO的通訊方式,識別中前端和后端服務(wù)建立SocketIO連接,根據(jù)事件進行數(shù)據(jù)的實時更新百分比進度

    2024年02月06日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包