日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue3中websocket用法

發布時間:2023/12/13 vue 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue3中websocket用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.0 認識 websocket

#1.0.1 什么是 websocket

和 http 協議類似,websocket 也是是一個網絡通信協議,是用來滿足前后端數據通信的。

#1.0.2 websocket 相比于 HTTP 的優勢

HTTP 協議:客戶端與服務器建立通信連接之后,服務器端只能被動地響應客戶端的請求,無法主動給客戶端發送消息。

websocket 協議:客戶端與服務器建立通信連接之后,服務器端可以主動給客戶端推送消息了!!!

#1.0.3 websocket 主要的應用場景

需要服務端主動向客戶端發送數據的場景,比如我們現在要做的智能聊天

#1.0.4 HTTP 協議和 websocket 協議對比圖

1.1 vue3組合api中socket.io-client 的基本使用

#1.1.1 安裝和配置 socket.io-client

參考?socket.io-client?的官方文檔進行配置和使用

  • 在項目中運行如下的命令,安裝 websocket 客戶端相關的包:

    npm i socket.io-client@4.0.0 -S# 如果 npm 無法成功安裝 socket.io-client,可以嘗試用 yarn 來裝包 # yarn add socket.io-client@4.0.0
  • 在?xx.vue?組件中,從?socket.io-client?模塊內按需導入?io?方法:

    // 按需導入 io 方法:調用 io('url') 方法,即可創建 websocket 連接的實例 import { io } from 'socket.io-client'
  • 事先setup中定義變量?socket,用來接收?io()?方法創建的 socket 實例:

    let socket = null
  • #1.1.2 創建和銷毀 socket 實例

  • 在?xx.vue?組件的setup?onMounted生命周期函數中,創建 websocket 實例對象:

    onMounted(() => {// 創建客戶端 websocket 的實例socket = io('ws://www.liulongbin.top:9999') })
  • 在 xx.vue?組件的setup?onBeforeUnmount生命周期函數中,關閉 websocket 連接銷毀 websocket 實例對象

    // 組件被銷毀之前,清空 sock 對象 onBeforeUnmount(() => {// 關閉連接socket.close()// 銷毀 websocket 實例對象socket = null })
  • #1.1.3 監聽連接的建立和關閉

  • 在?xx.vue?組件的setup??onMounted?生命周期函數中,調用?socket.on('connect', fn)?方法,可以監聽到 socket 連接成功的事件:

    // 建立連接的事件 socket.on('connect', () => console.log('connect: websocket 連接成功!'))
  • 在?xx.vue?組件的?created?生命周期函數中,調用?socket.on('disconnect', fn)?方法,可以監聽到 socket 連接關閉的事件:

    // 關閉連接的事件 socket.on('disconnect', () => console.log('disconnect: websocket 連接關閉!'))
  • #1.1.4 接收服務器發送的消息

  • 在?Chat.vue?組件的?setup??onMounted?生命周期函數中,調用?socket.on('message', fn)?方法,即可監聽到服務器發送到客戶端的消息:

    // 接收到消息的事件 socket.on('message', msg => console.log(msg))
  • 將服務器發送到客戶端的消息,存儲到 xx.vue?組件的?list?數組中:

    // 接收到消息的事件 socket.on('message', msg => {// 把服務器發送過來的消息,存儲到 list 數組中this.list.push({ name: 'xs', msg }) })
  • #1.1.5 向服務器發送消息

  • 客戶端調用?socket.emit('send', '消息內容')?方法,即可向 websocket 服務器發送消息:

    // 提交按鈕的點擊事件處理函數 const send = () => {// 如果輸入的聊天內容為空,則 return 出去if (!this.word) return// 向服務器發送消息socket.emit('send', this.word)// 將用戶填寫的消息存儲到 list 數組中this.list.push({ name: 'me', msg: this.word })// 清空文本框中的消息內容this.word = '' }
  • 總結

    以上是生活随笔為你收集整理的vue3中websocket用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。