關(guān)于vue-socket.io使用及版本原因消息無法監(jiān)聽bug
前言
主要記錄vue-socket.io使用,以及使用版本不同導(dǎo)致消息無法監(jiān)聽問題。
一、vue-socket.io使用
1.npm下載
npm install vue-socket.io --save-dev
2.在src文件夾里面新建lib文件夾
在lib文件夾里面新建socket.js
代碼如下(示例):
import Vue from 'vue'
import VueSocketIO from 'vue-socket.io'
import { getToken } from "../../libs/util";
let testA;
let wesocket = {
? debug: true,
? connection: ''
}
function getSocket (t) {
? console.log('地址',process.env.VUE_APP_SOCKET)
? var socketIp = process.env.VUE_APP_SOCKET// socket地址\
? wesocket.connection = socketIp
? if (getToken() || t) { // 判斷是否有token ?tokenId ?sessid
? ? let tk = getToken() ? getToken() : t
? ? wesocket.connection = socketIp + '?sessid=' + tk
? }
? wesocket.debug = true // 是否開啟控制臺監(jiān)聽打印數(shù)據(jù)
? if (wesocket.connection != '') {
? ? Vue.use(new VueSocketIO(wesocket))
? }
}
getSocket();
//掛在在全局prototype上
Vue.prototype.$getSocket = getSocket
export default testA3.在main.js引入
代碼如下(示例):
import VueSocketIO from './lib/socket' ?
new Vue({ ?
?? ?el: '#app', ?
?? ?VueSocketIO, ?
?? ?components: { ?
?? ?App ?
}, ?
template: '<App/>' ?10.?? ?})4.在組件中的用法
代碼如下(示例):
//跟methods同級?
sockets: {
? ?connect: function () {
? ? ? ?console.log('connect====連接');
? },
? ?// 監(jiān)聽斷開連接,函數(shù)
? ?disconnect() {
? ? ? ?console.log('disconnect====監(jiān)聽斷開連接')
? ?},
? ?reconnect () {
? ? ? ?console.log('reconnect====再連接')
? ?},
? ?msginfo: function (data) {
? ? ? ?let jsonObj = JSON.parse(data) ;
? ? ? ?console.log('jsonObj++++++++++',jsonObj)
? ?},
? ?msginfoTip: function (data) { // socket獲取冒泡信息
? ? ? ?let data1 = JSON.parse(data);
? ? ? ?let _this = this
? ? ? ?// console.log('data1獲取冒泡信息',data1)
? ?}
}注意: vue-socket.io3.07版本及以下版本可以這樣使用,能連接并且有數(shù)據(jù)返回,但是vue-socket.io3.08,3.09有bug連接了但是接收不到數(shù)據(jù)。
二、版本導(dǎo)致消息無法監(jiān)聽問題
vue-socket.io3.07版本及以下版本可以這樣使用,能連接并且有數(shù)據(jù)返回,但是vue-socket.io3.08,3.09有bug連接了但是接收不到數(shù)據(jù)。
在3.0.8和3.0.9下這樣寫無效

3.0.8和3.0.9要像下面一樣寫 利用listener來監(jiān)聽

代碼如下(示例):
this.sockets.listener.subscribe('connect', (data) => {
console.log('connect連接成功')
})
this.sockets.listener.subscribe('msginfo', (data) => {
console.log('數(shù)據(jù)監(jiān)聽msginfo',data)
})
this.sockets.listener.subscribe('msginfoTip', (data) => {
console.log('數(shù)據(jù)監(jiān)聽msginfoTip',data)
})
總結(jié)
vue-socket.io使用版本不同,監(jiān)聽數(shù)據(jù)方式不同。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vuejs 2.0 子組件訪問/調(diào)用父組件的方法(示例代碼)
這篇文章主要介紹了Vuejs 2.0 子組件訪問/調(diào)用父組件的方法(示例代碼),需要的朋友可以參考下2018-02-02
vue中echarts的用法及與elementui-select的協(xié)同綁定操作
這篇文章主要介紹了vue中echarts的用法及與elementui-select的協(xié)同綁定操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
前端低代碼form-generator實現(xiàn)及新增自定義組件詳解
這篇文章主要給大家介紹了關(guān)于前端低代碼form-generator實現(xiàn)及新增自定義組件的相關(guān)資料,form-generator是一個開源的表單生成器,可以幫助我們快速構(gòu)建各種表單頁面,需要的朋友可以參考下2023-11-11
詳解從Vue.js源碼看異步更新DOM策略及nextTick
本篇文章主要介紹了從Vue.js源碼看異步更新DOM策略及nextTick,具有一定的參考價值,感興趣的小伙伴們可以參考一2017-10-10

