您的位置: 翼速应用 > 业内知识 > web前端 > 正文

在vue 项目中采用websocket的正确姿势

vue 项目中使用websocket的正确姿势

在utils下新建websocket.js文件
// import { showInfoMsg, showErrorMsg } from ‘@/utils/popInfo’
import ElementUI from ‘element-ui’;
function initWebSocket(e) {

console.log(e)
 const wsUri = WS_API + "/webSocket/" + e;
 this.socket = new WebSocket(wsUri)//这里面的this都指向vue
 this.socket.onerror = webSocketOnError;
 this.socket.onmessage = webSocketOnMessage;
 this.socket.onclose = closeWebsocket;

}
function webSocketOnError(e) {

ElementUI.Notification({
     title: '',
     message: "WebSocket连接发生错误" + e,
     type: 'error',
    duration: 0,
 });

}
function webSocketOnMessage(e) {


 const data = JSON.parse(e.data);
 console.log(data.msgType === "INFO", data.msgType === "INFO")
 if (data.msgType === "INFO") {
    ElementUI.Notification({
         title: '',
         message: data.msg,
         type: 'success',
         duration: 3000,
     });
 } else if (data.msgType === "ERROR") {
     ElementUI.Notification({
         title: '',
         message: data.msg,
         type: 'error',
         duration: 0,
     });
 }

}
// 关闭websiocket
function closeWebsocket() {

console.log('连接已关闭...')

}
function close() {

this.socket.close() // 关闭 websocket
 this.socket.onclose = function (e) {
     console.log(e)//监听关闭事件
     console.log('关闭')
 }

}
function webSocketSend(agentData) {

 this.socket.send(agentData);

}
export default {

 initWebSocket,close

}

如果想刷新重新链接websocket 可以在App.vue页面里添加个钩子函数
mounted() {
//当在任一路由页面被刷新时,便是根组件app被从新建立,此时能够进行webSocket重连
//从localStorage中获取用户信息,是登陆状态则能够进行webSocket重连
let token = localStorage.getItem(“token”);
if (token) {
// userMessage = JSON.parse(userMessage);
this.$websocket.initWebSocket(token);
}
},

客户端主动关闭websocket 在关闭的地方触发函数就可以
logout() {
// localStorage.clear();
localStorage.removeItem(“token”);
this.$websocket.close();
this.$store.dispatch(“LogOut”).then(() => {
location.reload();
});
},

注:$webSocket 是在main.js中全局注册了websocket.js文件

关于这篇在vue项目中使用websocket的正确方案文章就介绍到这了,更多相关vue使用websocket内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题