實(shí)時通信Socket?io的使用示例詳解
引言
最近在工作中,遇到了一個需求,需要和后臺服務(wù)實(shí)時通信,獲取各種設(shè)備的實(shí)時狀態(tài)、以及對設(shè)備下發(fā)指令。后端這邊選擇了socket.io這個庫,前端這邊配合也只能使用這個,它的使用方式跟websocket很類似,為此簡單記錄一下socket.io的使用,希望幫助到有需要的人。
1、什么是socket.io
Socket.IO 是一個庫,可以在客戶端和服務(wù)器之間實(shí)現(xiàn) 低延遲, 雙向 和 基于事件的 通信。
它建立在 WebSocket 協(xié)議之上,并提供額外的保證,例如回退到 HTTP 長輪詢或自動重新連接。
2、socket.io的使用
1、安裝引入
npm install socket.io-client import { io } from "socket.io-client";
2、初始化
const socket = io("https://server-domain.com");
3、使用
socket鏈接成功以后,我們繼續(xù)接下來的操作,了解各個事件的使用。
socket.on("connect", () => { //監(jiān)聽連接是否成功 console.log("鏈接成功"); }); socket.on("disconnect", (reason) => { //監(jiān)聽連接異常中斷 console.log("中斷", reason); }); socket.on("message_event", (data) => { console.log("接收到的消息", data); }) // 此處需要注意的是on是一個監(jiān)聽事件,監(jiān)聽的message_event是和后臺約定好的事件名。 前端主動斷開鏈接 socket.close()或者 socket.disconnect()
4、消息的發(fā)送
// 發(fā)送消息 sendMessage(msgType, msgContent) { var jsonObject = { msgType: msgType, msgContent: msgContent }; socket.emit("send_event", jsonObject); }, //前端這邊通過emit發(fā)送消息,這里的send_event也是跟后端人員約定好的事件。
3、客戶端自帶事件
除了上面介紹的幾個主要事件外、還有一些其他事件
- connect:連接成功
- connecting:正在連接
- disconnect:斷開連接
- connect_failed:連接失敗
- error:錯誤發(fā)生,并且無法被其他事件類型所處理
- reconnect_failed:重連失敗
- reconnect:成功重連
- reconnecting:正在重連
4、版本問題
socket.io分為客戶端和服務(wù)器端,在選擇使用的時候,一定要注意相關(guān)版本的選擇要對應(yīng),要不然就會出現(xiàn)各種奇怪的問題,我當(dāng)時做的時候沒注意這一塊,就耽誤了一些時間。。。
相關(guān)版本兼容性如下表所示!
以上就是實(shí)時通信Socket io的使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Socket io實(shí)時通信的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue中watch的實(shí)際開發(fā)學(xué)習(xí)筆記
watch是Vue實(shí)例的一個屬性是用來響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時,這個方式是最有用的,下面這篇文章主要給大家介紹了關(guān)于vue中watch的實(shí)際開發(fā)筆記,需要的朋友可以參考下2022-11-11Vue?+?Element?實(shí)現(xiàn)按鈕指定間隔時間點(diǎn)擊思路詳解
這篇文章主要介紹了Vue?+?Element?實(shí)現(xiàn)按鈕指定間隔時間點(diǎn)擊,實(shí)現(xiàn)思路大概是通過加一個本地緩存的時間戳,通過時間戳計(jì)算指定時間內(nèi)不能點(diǎn)擊按鈕,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2023-12-12Vue 框架之動態(tài)綁定 css 樣式實(shí)例分析
這篇文章主要介紹了Vue 框架之動態(tài)綁定 css 樣式的方法,本文通過分享小實(shí)例給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11Antd form表單的使用、設(shè)值、取值、清空值方式
這篇文章主要介紹了Antd form表單的使用、設(shè)值、取值、清空值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue中如何給el-table-column添加指定列的點(diǎn)擊事件
elementui中提供了點(diǎn)擊行處理事件,下面這篇文章主要給大家介紹了關(guān)于vue中如何給el-table-column添加指定列的點(diǎn)擊事件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11