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

【vue3】前端應(yīng)用中使用WebSocket與服務(wù)器進行通信并管理連接狀態(tài)。

這篇具有很好參考價值的文章主要介紹了【vue3】前端應(yīng)用中使用WebSocket與服務(wù)器進行通信并管理連接狀態(tài)。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、寫一個hook函數(shù)

export const useWebsocketToStore = ({ onMessage }): any => {
    const url = 'ws:地址' + Math.random()
    const onConnected = () => {}
    const onDisconnected = () => {}
    const onError = () => {}
    const onMessageDefault = (ws: WebSocket, event: MessageEvent) => {
        try {
            const res: ResWSInfoAlarm = JSON.parse(event.data)
            console.log(res)
        } catch (e) {
            console.log(e)
        }
    }
    const { status, data, send, open, close } = useWebSocket(url, {
        heartbeat: {
            message: 'ping',
            interval: 5000,
            pongTimeout: 1000,
        },
        autoReconnect: {
            retries: 3,
            delay: 1000,
            onFailed() {
                console.log('Failed to connect WebSocket after 3 retries')
            },
        },
        onConnected: onConnected,
        onDisconnected: onDisconnected,
        onError: onError,
        onMessage: onMessage ?? onMessageDefault,
    })
    return {
        status,
        close,
        send,
        open,
    }
}
  1. url是WebSocket的服務(wù)器地址,其中Math.random()用于生成一個隨機數(shù),以避免緩存問題。
  2. onConnected、onDisconnectedonError是連接建立、斷開和出錯時的回調(diào)函數(shù),你可以根據(jù)實際需求來定義它們。
  3. onMessageDefault是當(dāng)接收到消息時的默認處理函數(shù),在這里將接收到的消息解析為JSON對象,并打印在控制臺上。
  4. 使用useWebSocket自定義Hook函數(shù)創(chuàng)建WebSocket連接,傳入連接的URL和一些配置選項,如心跳設(shè)置、自動重連等。
  5. 回了一些狀態(tài)和方法:status表示連接狀態(tài),data保存接收到的數(shù)據(jù),send用于向服務(wù)器發(fā)送消息,open用于手動打開連接,close用于關(guān)閉連接。

2、vue頁面中使用

const webSocketToStore = useWebsocketToStore({
    onMessage: (ws: WebSocket, event: MessageEvent) => {
        try {
            const res: ResWSInfoAlarm = JSON.parse(event.data)
            if (res.tenantid === tenantId.value) {
                if (res.type === EnumAlarmDialog.info_alarm) {
                    wsStore.setInfoAlarmCache(res.data)
                } else if (res.type === EnumAlarmDialog.hazard_alarm) {
                    openDialogHazard(res.data as any)
                    wsStore.initDangerAlarmCache()
                } else if (res.type === EnumAlarmDialog.video_alarm) {
                    openDialogVideo(res.data as any)
                    wsStore.initVideoAlarmCache()
                }
            }
        } catch (e) {
            console.log(e)
        }
    },
})

?文章來源地址http://www.zghlxwxcb.cn/news/detail-698363.html

  1. 使用useWebsocketToStore自定義Hook函數(shù)創(chuàng)建WebSocket連接,并傳入一個配置對象。
  2. 在配置對象中,指定了onMessage回調(diào)函數(shù)。當(dāng)接收到消息時,會進入該回調(diào)函數(shù)進行處理。
  3. onMessage回調(diào)函數(shù)中,首先嘗試將接收到的消息解析為ResWSInfoAlarm類型的JSON對象。
  4. 在解析成功后,根據(jù)解析出來的對象的屬性進行判斷和處理,具體邏輯如下:
    • 如果解析出來的tenantid屬性等于tenantId.value的值,則進行下一步判斷;
    • 根據(jù)解析出來的type屬性的不同值,執(zhí)行不同的操作。如果typeEnumAlarmDialog.info_alarm,則調(diào)用wsStore.setInfoAlarmCache方法,如果typeEnumAlarmDialog.hazard_alarm,則調(diào)用openDialogHazard方法并調(diào)用wsStore.initDangerAlarmCache方法,如果typeEnumAlarmDialog.video_alarm,則調(diào)用openDialogVideo方法并調(diào)用wsStore.initVideoAlarmCache方法。
  5. 如果解析失敗或發(fā)生錯誤,將錯誤信息打印在控制臺上。

到了這里,關(guān)于【vue3】前端應(yīng)用中使用WebSocket與服務(wù)器進行通信并管理連接狀態(tài)。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 記:vite3+vue3+axios前端項目跨域問題解決【前端和服務(wù)器nginx配置】

    前言:什么是跨域,網(wǎng)上一搜一大把,所以這里直接跳過,直入主題。 處理方式:不通過后端處理跨域,通過前端+服務(wù)器nginx處理。 1.前端涉及處理跨域的必要配置(開發(fā)環(huán)境、生產(chǎn)環(huán)境):vite3、vue3、axios 2.服務(wù)器涉及處理跨域的配置(生產(chǎn)環(huán)境):nginx【主要用到其配置

    2024年02月01日
    瀏覽(101)
  • Vue 如何使用WebSocket與服務(wù)器建立鏈接 持續(xù)保持通信

    瀏覽器通過JavaScript向服務(wù)器發(fā)出建立WebSocket鏈接的請求,鏈接建立后,客戶端和服務(wù)器端就可以通過TCP鏈接直接交互數(shù)據(jù)。WebSocket鏈接后可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onnessage 事件來接受服務(wù)器返回的數(shù)據(jù)。 WebSocket - Web API 接口參考 | MDN

    2024年01月18日
    瀏覽(24)
  • WebSocket心跳機制/服務(wù)器端開連接(JS前端)

    情景: 前端使用 WebSocket 的時候,后端長時間沒有推送數(shù)據(jù),導(dǎo)致 WebSocket 連接經(jīng)常斷開,后端也會報錯。 解決方法: 通過 心跳機制 讓前端和后端始終保持連接。 代碼: 使用方法: 注意: 后端收到以后需要給前端返回數(shù)據(jù),否則還是無法保持連接 代碼參考了:https://bl

    2024年02月12日
    瀏覽(28)
  • 使用寶塔面板部署Node.js+Mysql服務(wù)和Vue3-Admin項目到云服務(wù)器上

    使用寶塔面板部署Node.js+Mysql服務(wù)和Vue3-Admin項目到云服務(wù)器上

    準(zhǔn)備工作 一臺云服務(wù)器,可以先用免費試用一個月的服務(wù)器進行練手;我這里選擇的是騰訊云的輕量云服務(wù)器; 1、在云服務(wù)器上安裝寶塔面板 寶塔面板官網(wǎng)地址:https://www.kancloud.cn/chudong/bt2017/424209 1.1 安裝Xshell腳本工具,通過這個工具來連接云服務(wù)器,進行寶塔面板的安裝

    2024年01月25日
    瀏覽(28)
  • 使用node搭建服務(wù)器,前端自己寫接口,將vue或react打包后生成的dist目錄在本地運行

    使用node搭建服務(wù)器,前端自己寫接口,將vue或react打包后生成的dist目錄在本地運行

    vue項目打包后生成的dist目錄如果直接在本地打開index.html,在瀏覽器中會報錯,無法運行起來。 通常我是放到后端搭建的服務(wù)上面去運行,當(dāng)時前端自己也可以是node,nuxt搭建服務(wù)器,寫接口等等 如果想在本地運行,我們可以借助node.js+express搭建一個服務(wù)器,將打包后的文件部

    2024年02月03日
    瀏覽(31)
  • 使用node簡單搭建websocket服務(wù)器

    我們都知道,http協(xié)議通信只能由客戶端發(fā)起,然后服務(wù)端再做出響應(yīng);但是websocket協(xié)議最大的特點是服務(wù)端可以主動向客戶端推送消息,客戶端也可以主動向服務(wù)器發(fā)送消息 往常實現(xiàn)雙向通信的方法主要是 輪詢, 客戶端通過定時器,每隔一段時間就會主動發(fā)送請求給服務(wù)器

    2024年02月05日
    瀏覽(26)
  • vue項目訪問服務(wù)器時:WebSocket connection to ‘wss://XXXX/‘的解決方法

    vue項目訪問服務(wù)器時:WebSocket connection to ‘wss://XXXX/‘的解決方法

    關(guān)于WebSocke的介紹:新手入門:websocket 簡單來說,WebSocket 為web應(yīng)用程序客戶端和服務(wù)端之間(客戶端服務(wù)端)提供了一種全雙工通信機制,報錯是因為發(fā)送報文的過程出現(xiàn)問題。 我的報錯如下: 程序可以正常運行使用,但一直打印報錯太難受了,問了一下同事,也查了一下

    2024年02月11日
    瀏覽(24)
  • vue3 history模式配置及nginx服務(wù)器配置

    vue3 history模式配置及nginx服務(wù)器配置

    vue的路由方式有hash模式和history模式,history模式路由看起來有好些,路由路徑里沒有#號,而hash模式默認是有#號的。 vue3開始默認新建的項目都是history模式,不過history模式打包后想要使用正常訪問的話,需要后端服務(wù)器進行配置才可以,否則可能會出現(xiàn)刷新后404的問題。一般

    2024年02月05日
    瀏覽(25)
  • Vite打包Vue3項目,利用寶塔部署到服務(wù)器

    Vite打包Vue3項目,利用寶塔部署到服務(wù)器

    按照如圖的配置,將vite.config.js的 base 改為? /dist/ 然后npm run build 就會得到左邊的這個dist文件夾,這就是打包好的文件 創(chuàng)建項目以及項目配置 我在服務(wù)器安裝的php是5.6版本的,其他版本可以自己試一下 解決刷新404問題 上傳成功之后,文件目錄結(jié)構(gòu)是這樣的 (順序不一定要

    2024年04月13日
    瀏覽(172)
  • vue2 vue3 配置代理 服務(wù)器返回404- 500的解決思路

    一、服務(wù)器返回500拒絕請求 1,服務(wù)器的服務(wù)沒有起來 2,vue本地的代理地址填寫錯誤,可能代理到別家的服務(wù)器了 正確的寫法如下:(主要體現(xiàn)在ip地址和端口是否錯誤,當(dāng)然也需要檢查是否多了字母及符號。) http://112.59.21.18:8080 二、如果返回500,未找到頁面404,說明是接口

    2024年02月16日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包