最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項(xiàng)目中使用websocket的實(shí)現(xiàn)

 更新時(shí)間:2022年01月28日 10:26:07   作者:藍(lán)胖子的多啦A夢(mèng)  
本文主要介紹了vue項(xiàng)目中使用websocket的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

什么是websocket?

“WebSocket 是 HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。
WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。
在 WebSocket API 中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。”

1. 在utils下新建websocket.js文件

// import { showInfoMsg, showErrorMsg } from '@/utils/popInfo'
import ElementUI from 'element-ui';
function initWebSocket(e) {
    console.log(e)
    const wsUri = WS_API + "/webSocket/" + e;
    this.socket = new WebSocket(wsUri)//這里面的this都指向vue
    this.socket.onerror = webSocketOnError;
    this.socket.onmessage = webSocketOnMessage;
    this.socket.onclose = closeWebsocket;
}
function webSocketOnError(e) {
    ElementUI.Notification({
        title: '',
        message: "WebSocket連接發(fā)生錯(cuò)誤" + e,
        type: 'error',
        duration: 0,
    });
}
function webSocketOnMessage(e) {
    const data = JSON.parse(e.data);
    console.log(data.msgType === "INFO", data.msgType === "INFO")
    if (data.msgType === "INFO") {
        ElementUI.Notification({
            title: '',
            message: data.msg,
            type: 'success',
            duration: 3000,
        });

    } else if (data.msgType === "ERROR") {
        ElementUI.Notification({
            title: '',
            message: data.msg,
            type: 'error',
            duration: 0,
        });
    }
}
// 關(guān)閉websiocket
function closeWebsocket() {
    console.log('連接已關(guān)閉...')
}
function close() {
    this.socket.close() // 關(guān)閉 websocket
    this.socket.onclose = function (e) {
        console.log(e)//監(jiān)聽關(guān)閉事件
        console.log('關(guān)閉')
    }
}
function webSocketSend(agentData) {
    this.socket.send(agentData);
}
export default {
    initWebSocket, close
}

在這里插入圖片描述

 

在這里插入圖片描述

如果想刷新重新鏈接websocket 可以在App.vue頁面里添加個(gè)鉤子函數(shù)

  mounted() {
    //當(dāng)在任一路由頁面被刷新時(shí),便是根組件app被從新建立,此時(shí)能夠進(jìn)行webSocket重連
    //從localStorage中獲取用戶信息,是登陸狀態(tài)則能夠進(jìn)行webSocket重連
    let token = localStorage.getItem("token");
    if (token) {
      // userMessage = JSON.parse(userMessage);
      this.$websocket.initWebSocket(token);
    }
  },

在這里插入圖片描述

客戶端主動(dòng)關(guān)閉websocket 在關(guān)閉的地方觸發(fā)函數(shù)就可以

 logout() {
      // localStorage.clear();
      localStorage.removeItem("token");
      this.$websocket.close();
      this.$store.dispatch("LogOut").then(() => {
        location.reload();
      });
    },

在這里插入圖片描述

注:$webSocket 是在main.js中全局注冊(cè)了websocket.js文件

在這里插入圖片描述

 到此這篇關(guān)于vue項(xiàng)目中使用websocket的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue使用websocket內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3中el-table實(shí)現(xiàn)表格合計(jì)行的示例代碼

    vue3中el-table實(shí)現(xiàn)表格合計(jì)行的示例代碼

    這篇文章主要介紹了vue3中el-table實(shí)現(xiàn)表格合計(jì)行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • vue2之簡易的pc端短信驗(yàn)證碼的問題及處理方法

    vue2之簡易的pc端短信驗(yàn)證碼的問題及處理方法

    這篇文章主要介紹了vue2之簡易的pc端短信驗(yàn)證碼的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • elementUI中Table表格問題的解決方法

    elementUI中Table表格問題的解決方法

    這篇文章主要給大家介紹了關(guān)于elementUI中Table表格問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Vue開發(fā)工具之vuejs-devtools安裝教程及常見問題解決(最詳細(xì))

    Vue開發(fā)工具之vuejs-devtools安裝教程及常見問題解決(最詳細(xì))

    這篇文章主要介紹了Vue開發(fā)工具vuejs-devtools超級(jí)詳細(xì)安裝教程以及常見問題解決本篇文章是最詳細(xì)的vue開發(fā)工具vuejs-devtools安裝教程,需要的朋友可以參考下
    2022-11-11
  • Vue3實(shí)現(xiàn)Message消息組件示例

    Vue3實(shí)現(xiàn)Message消息組件示例

    在大多數(shù) web 產(chǎn)品中,全局的 Message 組件占有較大的使用場(chǎng)景,本文主要介紹了Vue3實(shí)現(xiàn)Message消息組件示例,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Vue使用Element-UI實(shí)現(xiàn)分頁效果全過程

    Vue使用Element-UI實(shí)現(xiàn)分頁效果全過程

    element-ui官網(wǎng)上有分頁實(shí)現(xiàn)的功能,簡單方便又好用,也有很多分頁的樣式,你可以根據(jù)需要去選擇自己想要的樣式,下面這篇文章主要給大家介紹了關(guān)于Vue使用Element-UI實(shí)現(xiàn)分頁效果的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue  directive定義全局和局部指令及指令簡寫

    vue directive定義全局和局部指令及指令簡寫

    這篇文章主要介紹了vue directive定義全局和局部指令及指令簡寫,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue-plugin-hiprint 詳細(xì)使用

    vue-plugin-hiprint 詳細(xì)使用

    這篇文章主要介紹了vue-plugin-hiprint 詳細(xì)使用說明,使用Vue.Draggable庫構(gòu)建可拖拽元素的示例,你可以根據(jù)具體需求和技術(shù)選型選擇適合的庫或方法來實(shí)現(xiàn)可拖拽元素的功能,需要的朋友可以參考下
    2023-08-08
  • vue面包屑組件的封裝方法

    vue面包屑組件的封裝方法

    這篇文章主要為大家詳細(xì)介紹了vue面包屑組件的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue.js鼠標(biāo)懸浮更換圖片功能

    Vue.js鼠標(biāo)懸浮更換圖片功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)鼠標(biāo)懸浮更換圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論

澄城县| 贡觉县| 宁津县| 呼伦贝尔市| 西宁市| 波密县| 余江县| 女性| 和静县| 甘孜| 镇沅| 蒙城县| 西安市| 文水县| 抚顺市| 札达县| 张家川| 通河县| 哈尔滨市| 沙湾县| 西平县| 青田县| 连平县| 南漳县| 迁安市| 新乐市| 金秀| 梅州市| 桐城市| 永嘉县| 肥东县| 报价| 张家口市| 西青区| 水富县| 巧家县| 永州市| 海阳市| 祁东县| 乐安县| 虞城县|