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

前端實現(xiàn)websocket通信講解(vue2框架)

這篇具有很好參考價值的文章主要介紹了前端實現(xiàn)websocket通信講解(vue2框架)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:最近接到的需求是前端需要實現(xiàn)一個全局告警彈窗,如果使用ajax請求http接口只能用定時器定時去請求是否有告警,這樣既消耗資源,又不能實時監(jiān)測到告警信息。所以這個時候就可以采用websocket來實現(xiàn)通信,因為websocket不用請求一次才響應一次,它可以實現(xiàn)服務器主動發(fā)送。

websocket:

  • WebSocket是HTML5下一種新的協(xié)議(websocket協(xié)議本質(zhì)上是一個基于tcp的協(xié)議)
  • 它實現(xiàn)了瀏覽器與服務器全雙工通信,能更好的節(jié)省服務器資源和帶寬并達到實時通訊的目的
  • Websocket是一個持久化的協(xié)議

websocket提供的api:

// 連接成功后的回調(diào)函數(shù)
ws.onopen = function (params) {
  console.log('客戶端連接成功')
  // 向服務器發(fā)送消息
  ws.send('hello')
};

// 從服務器接受到信息時的回調(diào)函數(shù)
ws.onmessage = function (e) {
  console.log('收到服務器響應', e.data)
};

// 連接關(guān)閉后的回調(diào)函數(shù)
ws.onclose = function(evt) {
  console.log("關(guān)閉客戶端連接");
};

// 連接失敗后的回調(diào)函數(shù)
ws.onerror = function (evt) {
  console.log("連接失敗了");
};


// 監(jiān)聽窗口關(guān)閉事件,當窗口關(guān)閉時,主動去關(guān)閉websocket連接,防止連接還沒斷開就關(guān)閉窗口,這樣服務端會拋異常。
window.onbeforeunload = function() {
    ws.close();
}  

接下來陳列一個vue2項目內(nèi)使用websocket的過程:

一、首先寫一個websocket的工具,方便直接調(diào)用websocket方法

目錄?

websocket前端,JavaScript,websocket,網(wǎng)絡協(xié)議,前端,vue,網(wǎng)絡

websocket.js代碼:

/**
 * websocket創(chuàng)建
 */

export function websocket() {
  return new Promise((res, req) => {
    if ('WebSocket' in window) {
      const ws = new WebSocket(`${'wss://'+ document.location.host+'/ws/notify_warning/'}`)
//這里用的document.location.host取url地址,在調(diào)試時也可以先寫死,wss還是ws需要和后端同事確認
      res(ws)
    } else {
      req('您的瀏覽器不支持 WebSocket!')
    }
  })
}

?二、寫一個狀態(tài)機來管理數(shù)據(jù),將后端傳來的數(shù)據(jù)存到state.message

import { websocket } from '@/utils/websocket'
import store from './../index'
import { getToken } from '@/utils/auth' // get token from cookie

const state = {
  message: {},
  ws: null
}

const mutations = {
  SET_MESSAGE: (state, message) => {
    state.message = message
  },
  SET_WS: (state, ws) => {
    state.ws = ws
  }
}

const actions = {
  websocketMsg({ commit }) {
    return new Promise((resolve, reject) => {
      websocket().then((ws) => {
        commit('SET_WS', ws)
        ws.onopen = function() {
          // Web Socket 已連接上,使用 send() 方法發(fā)送數(shù)據(jù)
          ws.send('發(fā)送數(shù)據(jù)')
        }

        ws.onmessage = function(evt) {
          var received_msg = evt.data
          commit('SET_MESSAGE', received_msg)
        }
        ws.onerror = function(error) {
          reject(error)
        }
        ws.onclose = function() {
          // 關(guān)閉 websocket
          // alert("連接已關(guān)閉...");
          if (getToken()) {
            store.dispatch('message/websocketMsg')
          }
        }
        resolve()
      })
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

三、在合適的地方去調(diào)用:

 try {
          await store.dispatch("message/websocketMsg");
        } 
catch (err) {}

這樣websocket傳過來的值就存在了message中,可以將其渲染在頁面中文章來源地址http://www.zghlxwxcb.cn/news/detail-657901.html

到了這里,關(guān)于前端實現(xiàn)websocket通信講解(vue2框架)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 關(guān)于前端框架vue2升級為vue3的相關(guān)說明

    關(guān)于前端框架vue2升級為vue3的相關(guān)說明

    一些框架需要升級 當前(202306) Vue 的最新穩(wěn)定版本是 v3.3.4 。Vue 框架升級為最新的3.0版本,涉及的相關(guān)依賴變更有: 前提條件:已安裝 16.0 或更高版本的Node.js(摘) 必須的變更:核心庫vue@23、路由vue-router@34、狀態(tài)管理vuex@34 構(gòu)建工具鏈: Vue CLI Vite(摘) 狀態(tài)管理: Vuex Pi

    2024年02月15日
    瀏覽(63)
  • sanic 使用websocket與前端vue通信,持續(xù)發(fā)送信息

    由于sanic使用較少,很難獲取到有效信息,而且對websocket也是挺“一竅不通”的,因此寫一下總結(jié)。在使用過程中,對sanic注冊websocket,還是使用socketio不清。前端vue是使用io,還是WebSocket還是VueSocketIO。 API:sanic.add_websocket_route是Sanic框架自帶的一個方法,用于添加WebSocket路由

    2024年02月11日
    瀏覽(22)
  • 【websocket】Node+Vue2+WebSocket實現(xiàn)前后端通訊

    【websocket】Node+Vue2+WebSocket實現(xiàn)前后端通訊

    WebSocket是一個長連接,客戶端可以給服務端發(fā)送消息,服務端也可以給客戶端發(fā)送消息,是 全雙工通信。 平時的前后端分離項目,是前端請求結(jié)果獲取后端服務器數(shù)據(jù),從而渲染到頁面,服務端無法主動向客戶端發(fā)起消息,某些需求場景下,一旦客戶端 需要知道服務端的頻

    2024年02月02日
    瀏覽(22)
  • websocket實現(xiàn)聊天室(vue2 + node)

    websocket實現(xiàn)聊天室(vue2 + node)

    需求分析如圖: 搭建的項目結(jié)構(gòu)如圖: 前端步驟: vue create socket_demo (創(chuàng)建項目) views下面建立Home , Login組件 路由里面配置路徑 Home組件內(nèi)部開啟websocket連接 前端相關(guān)組件代碼: Login組件 Home組件 router/index.js 后端步驟: 在項目外層創(chuàng)建server文件夾(src目錄同級) npm init -y創(chuàng)建

    2024年01月22日
    瀏覽(101)
  • ? 全面解析若依框架vue2版本(springboot-vue前后分離--前端部分)

    ? 全面解析若依框架vue2版本(springboot-vue前后分離--前端部分)

    一般在vue項目public文件夾下命名為“favicon.ico” ? 處理步驟 第1步:將圖標重命名為“favicon.ico”,并放在項目根目錄 下。 第2步:然后在index.html中引入,title中修改頁面標題。 第3步:修改build文件夾下 webpack .dev.conf.js和webpack.prod.conf.js文件中的內(nèi)容。 第五步:重新已經(jīng)成功

    2024年02月12日
    瀏覽(99)
  • 前端2023最全面試題(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)

    答案:JavaScript中的閉包是一種函數(shù),它有權(quán)訪問其詞法環(huán)境的變量和其它函數(shù)。這意味著,即使其包含它的函數(shù)已經(jīng)執(zhí)行完畢,其詞法環(huán)境仍然存在,因此可以訪問其作用域內(nèi)的變量。 答案:回調(diào)函數(shù)是在某個特定事件之后執(zhí)行的函數(shù)。在JavaScript中,通常使用回調(diào)函數(shù)來處

    2024年02月06日
    瀏覽(34)
  • SpringBoot和Vue2集成WebSocket,實現(xiàn)聊天室功能

    springboot集成websocket實現(xiàn)聊天室的功能。如有不足之處,還望大家斧正。

    2024年01月23日
    瀏覽(27)
  • Spring Boot整合WebSocket實現(xiàn)實時通信,前端實時通信,前后端實時通信

    實時通信在現(xiàn)代Web應用中扮演著越來越重要的角色,無論是在線聊天、股票價格更新還是實時通知,WebSocket都是實現(xiàn)這些功能的關(guān)鍵技術(shù)之一。Spring Boot作為一個簡化企業(yè)級應用開發(fā)的框架,其對WebSocket的支持也非常友好。本文將詳細介紹如何在Spring Boot中整合WebSocket,實現(xiàn)一

    2024年04月27日
    瀏覽(51)
  • 【vue3】前端應用中使用WebSocket與服務器進行通信并管理連接狀態(tài)。

    1、寫一個hook函數(shù) url 是WebSocket的服務器地址,其中 Math.random() 用于生成一個隨機數(shù),以避免緩存問題。 onConnected 、 onDisconnected 和 onError 是連接建立、斷開和出錯時的回調(diào)函數(shù),你可以根據(jù)實際需求來定義它們。 onMessageDefault 是當接收到消息時的默認處理函數(shù),在這里將接收

    2024年02月09日
    瀏覽(46)
  • 【W(wǎng)ebSocket項目實戰(zhàn)】聊天室(前端vue3、后端spring框架)

    【W(wǎng)ebSocket項目實戰(zhàn)】聊天室(前端vue3、后端spring框架)

    最近我學習了WebSocket,為了更好地掌握這一技術(shù),我決定通過做一個項目來鞏固學習成果。在這個項目中,我將使用JavaScript和WebSocket來實現(xiàn)實時通信,讓客戶端和服務器端能夠?qū)崟r地傳遞和接收數(shù)據(jù)。通過這個項目,我希望能夠更深入地了解WebSocket的工作原理,并且能夠在實

    2024年02月04日
    瀏覽(94)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包