vue使用socket.io實(shí)現(xiàn)實(shí)時(shí)通訊

安裝 vue-socket.io

npm install --save vue-socket.io

src>lib>socket.js

新建文件夾及socket.js文件

import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
var a
var wesocket = {
    debug: true,
    connection: '',
}

function getSocket(t) {
    var socketIp = 'http://...';//socket地址
    wesocket.connection = socketIp;
    if (localStorage.getItem('Token') || t) {//判斷是否有token
        let tk = localStorage.getItem('Token') ? localStorage.getItem('Token') : t;
        wesocket.connection = socketIp + '?usekey=' + tk;
    }
    if (wesocket.connection != '') {
        Vue.use(new VueSocketIO(wesocket))
    }
}
getSocket()
Vue.prototype.$getSocket = getSocket;
//監(jiān)聽localStorage,判斷是否有token
window.addEventListener('setItemEvent', function(e) {
    if (e.key == 'Token' && e.newValue) {
        let token = e.newValue
        getSocket(token)
    }
})
export default a

main.js引入SocketIO

// websocket
import VueSocketIO from './lib/socket'

vue2.0+需要把VueSocketIO 添加到new Vue里邊,vue3.0+則不需要

new Vue({
    el: '#app',
    VueSocketIO,
    components: {
        App
    },
    template: '<App/>'
})

socket監(jiān)聽

<script>
export default {
  name: 'app',
  sockets: {
        connect() {
            //查看socket是否渲染成功 
        },
        servermessage(data) {
            //監(jiān)聽message事件,方法是后臺(tái)定義和提供的
            console.log(data)
        },
    },
}
</script>

發(fā)送數(shù)據(jù)

this.$socket.emit("clientmessage", "發(fā)送內(nèi)容"); 

socket自帶的幾個(gè)事件

connect:查看socket是否渲染成功 
disconnect:檢測(cè)socket斷開連接 
reconnect:重新連接socket事件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容