vue创建公共函数工具utils文件

说明: 封装一个公共方法connectWebsocket() ,进行全局调用

1、在src下创建utils文件夹,目录下创建index.html

复制代码
import config from '@/config'
export default {
  // websocket
  websocket: '',
  // 创建websocket链接
  connectWebsocket (val) {
    debugger
    let _this = this
    const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
    if (typeof (WebSocket) === 'undefined') {
      alert('您的浏览器不支持socket')
    } else {
      // 实例化websocket
      var path = baseUrl.replace('http', 'ws') + '/websocket/' + val
      _this.websocket = ''
      _this.websocket = new WebSocket(path)
      // 监听websocket连接
      _this.websocket.onopen = function (event) {
        console.log('建立连接')
        sessionStorage.setItem('ws', _this.websocket)
      }
      // 监听websocket错误信息
      _this.websocket.onerror = function () {
        alert('websocket通信发生错误!')
      }
      // websocket
      _this.websocket.onmessage = function (event) {
        debugger
        var t
        if (event.data) {
          try {
            // 封装返回的数据
            t = JSON.parse(event.data)
            console.log(t.content)
          } catch (e) {
            // 如果是字符串则直接赋值
            t = event.data
          }
        }
        // 如果是登陆
        if (t === 'uccessfulconnection') {
          // 音乐播放欢迎登陆
        } else { // 发送消息
          if (t instanceof Object) {
            if (t.type === 0) {
              // 发送的消息
              Notice.info({
                title: '消息通知',
                desc: t.username + t.content
              })
              Header.methods.changeunreadcount('add', 1)
            } else if (t.type === 1) {
              // 发送的公告
              Notice.info({
                title: '公告通知',
                desc: t.username + t.content
              })
            } else {
            }
          } else if (t instanceof String) {
            // 分配任务时工作流调用
          } else {
            // 其他
          }
          // 弹窗提醒, 播放音乐
          // document.getElementById('notice').play();
          //   }
        }
      }
      // websocket
      _this.websocket.onclose = function (event) {
        console.log('连接关闭')
        _this.websocket = ''
        sessionStorage.removeItem('ws')
      }
      // 页面刷新时关闭连接(此处不写一样会关闭,因一些原因要写上)
      window.onbeforeunload = function () {
        _this.websocket.close()
        _this.websocket = ''
        sessionStorage.removeItem('ws')
      }
    }
  }
}
复制代码

2、封装使用,在main.js中添加

// 工具函数引入
import Utils from './utils'
 
Object.defineProperty(Vue.prototype, '$Utils', {value: Utils})

3、调用函数

this.$Utils.connectWebsocket(res.id)

 

posted @   浅笑19  阅读(175)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示