vue項(xiàng)目使用websocket技術(shù)解讀
一、為什么需要websocket?
前端和后端的交互模式最常見的就是前端發(fā)數(shù)據(jù)請求,從后端拿到數(shù)據(jù)后展示到頁面中。如果前端不做操作,后端不能主動向前端推送數(shù)據(jù),這也是http協(xié)議的缺陷。
因此,一種新的通信協(xié)議應(yīng)運(yùn)而生---websocket,他最大的特點(diǎn)就是服務(wù)端可以主動向客戶端推送消息,客戶端也可以主動向服務(wù)端發(fā)送消息,實(shí)現(xiàn)了真正的平等。

websocket其他特點(diǎn)如下:
(1)建立在 TCP 協(xié)議之上,服務(wù)器端的實(shí)現(xiàn)比較容易。
(2)與 HTTP 協(xié)議有著良好的兼容性。默認(rèn)端口也是80和443,并且握手階段采用 HTTP 協(xié)議,因此握手時(shí)不容易屏蔽,能通過各種 HTTP 代理服務(wù)器。
(3)數(shù)據(jù)格式比較輕量,性能開銷小,通信高效。
(4)可以發(fā)送文本,也可以發(fā)送二進(jìn)制數(shù)據(jù)。
(5)沒有同源限制,客戶端可以與任意服務(wù)器通信。
(6)協(xié)議標(biāo)識符是ws(如果加密,則為wss),服務(wù)器網(wǎng)址就是 URL。
二、vue項(xiàng)目如何引用websocket?
vue使用websocket需要注意以下幾點(diǎn):
(1)首先需要判斷瀏覽器是否支持websocket,關(guān)于如何解決兼容性問題可以參考 這里這里

(2)在組件加載的時(shí)候連接websocket,在組件銷毀的時(shí)候斷開websocket
(3)后端接口需要引入socket模塊,否則不能實(shí)現(xiàn)連接
不廢話了,直接附上完整代碼:
<template>
<div>
<button @click="send">發(fā)消息</button>
</div>
</template>
<script>
export default {
data () {
return {
path:"ws://192.168.0.200:8005/qrCodePage/ID=1/refreshTime=5",
socket:""
}
},
mounted () {
// 初始化
this.init()
},
methods: {
init: function () {
if(typeof(WebSocket) === "undefined"){
alert("您的瀏覽器不支持socket")
}else{
// 實(shí)例化socket
this.socket = new WebSocket(this.path)
// 監(jiān)聽socket連接
this.socket.onopen = this.open
// 監(jiān)聽socket錯(cuò)誤信息
this.socket.onerror = this.error
// 監(jiān)聽socket消息
this.socket.onmessage = this.getMessage
}
},
open: function () {
console.log("socket連接成功")
},
error: function () {
console.log("連接錯(cuò)誤")
},
getMessage: function (msg) {
console.log(msg.data)
},
send: function () {
this.socket.send(params)
},
close: function () {
console.log("socket已經(jīng)關(guān)閉")
}
},
destroyed () {
// 銷毀監(jiān)聽
this.socket.onclose = this.close
}
}
</script>
<style>
</style>總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 在vue3中使用webSocket構(gòu)建聊天對話方式
- 基于Vue+.NET全面實(shí)現(xiàn)WebSocket聊天室
- WebSocket用法與在 Vue 中的使用指南
- 基于Vue+WebSocket實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)可視化的實(shí)戰(zhàn)指南
- Vue+Nodejs使用WebSocket創(chuàng)建一個(gè)簡易聊天室教程
- vue+springboot+webtrc+websocket實(shí)現(xiàn)雙人音視頻通話會議(最新推薦)
- SpringBoot+Netty+Vue+WebSocket實(shí)現(xiàn)在線聊天
相關(guān)文章
vue2和vue3中provide/inject的基本用法示例
Vue中的provide/inject是一種組件間通信的方式,它允許父組件向子組件傳遞數(shù)據(jù),而不需要通過props或事件來實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue2/vue3中provide/inject的基本用法的相關(guān)資料,需要的朋友可以參考下2023-04-04
Vue?2?和?Vue?3?中?toRefs函數(shù)的不用用法
Vue?是一款流行的JavaScript?框架,用于構(gòu)建用戶界面,在Vue2和?Vue3中,都存在一個(gè)名為toRefs的函數(shù),但其行為在這兩個(gè)版本中有所不同,這篇文章主要介紹了Vue2和Vue3中toRefs的區(qū)別,需要的朋友可以參考下2023-08-08
Vue3中reactive函數(shù)toRef函數(shù)ref函數(shù)簡介
這篇文章主要介紹了Vue3中的三種函數(shù),分別對reactive函數(shù)toRef函數(shù)以及ref函數(shù)原理及使用作了簡單介紹,有需要的朋友可以借鑒參考下2021-09-09
Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案
這篇文章主要介紹了Vue3組件中g(shù)etCurrentInstance()獲取App實(shí)例,但是返回null的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
vue中的vue-router?query方式和params方式詳解
這篇文章主要介紹了vue中的vue-router?query方式和params方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue使用vxe-table導(dǎo)出和自定義Excel樣式的詳細(xì)教程
vxe-table 不僅支持將表格數(shù)據(jù)導(dǎo)出為 .xlsx 文件,還提供了強(qiáng)大的自定義樣式能力,因此本文給大家介紹了Vue使用vxe-table導(dǎo)出和自定義Excel樣式的詳細(xì)教程,需要的朋友可以參考下2026-05-05
vue.js實(shí)現(xiàn)簡單的計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)簡單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02

