websocket 配置 vue

本文详细介绍了如何在Web应用程序中配置WebSocket服务,并重点讲解了如何将其与Vue.js前端框架进行有效整合,实现实时双向通信。通过实例代码,读者将学会创建WebSocket连接,发送与接收消息,并在Vue组件中展示更新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 data(){
	return {
	socket:null
	}
}

 mounted() {
    // 初始化
    this.init()
  },
// 组件被销毁时关闭监听,如不关闭,websocket会一直挂载
  beforeDestroy() {
    this.close()
  },

methods: {
	//   进入聊天室,连接socket
    init: function () {
      let that = this
      if (typeof WebSocket === 'undefined') {
        alert('您的浏览器不支持socket')
      } else {
        // 实例化socket
        this.socket = new WebSocket(你的socket地址)
        // 监听socket连接
        this.socket.onopen = this.open
        // 监听socket错误信息
        this.socket.onerror = this.error
        // 监听socket消息
        this.socket.onmessage = this.getMessage
        //关闭 的函数  onclose 并不是关闭函数
        this.socket.close = this.close
      }
    },
    open: function () {},
    error: function () {
      this.init()
    },
      getMessage: function (msg) {
      let that = this
      if (msg.data == 'HeartBeat') {
        return
      }
      以下是对数据进行的处理,注意要将传入的对象进行josn解码操作,不然不是对象形式
      let str = JSON.parse(msg.data)
      if (str.projectId == this.projectId) {
        this.newsArr.push(str)
        // 滚动
        this.$nextTick(() => {
          let msg = document.getElementById('gundong') // 获取对象
          if (msg == null) {
            return
          }
          msg.scrollTop = msg.scrollHeight // 滚动高度
        })
        //播放提示音,提示来消息了——   
        let audio = document.querySelector('#tishi-audio')
        audio.play()
      }
      // 关闭连接
    close: function () {
    //在其内执行函数,相当于onclose 这个websocket的周期
      clearInterval(this.timeoutObj)
    },
    }, 
}
### 如何在 Vue 2 项目中配置 WebSocket 为了实现在 Vue 2 项目中的 WebSocket 配置,可以采用多种方法。一种常见的方式是利用 `vue-native-websocket` 插件来简化 WebSocket 的集成过程。 #### 安装插件 首先,在命令行工具中执行如下 npm 命令以安装所需的库: ```bash npm install vue-native-websocket@next socket.io-client --save ``` 此操作会下载并保存 `vue-native-websocket` 和其依赖项到项目的 node_modules 文件夹下[^1]。 #### 创建 WebSocket 连接 接着可以在 main.js 或其他合适的地方初始化 WebSocket 连接: ```javascript import Vue from 'vue' import App from './App.vue' // 导入 websocket 插件 import VueNativeSock from 'vue-native-websocket' Vue.config.productionTip = false; // 使用插件,并指定服务器地址以及选项 Vue.use(VueNativeSock, 'ws://localhost:8080', { format: 'json', reconnection: true, }) new Vue({ render: h => h(App), }).$mount('#app') ``` 这段代码展示了如何创建一个新的 WebSocket 实例并与给定 URL 地址建立连接。这里还设置了自动重连功能以便在网络中断后能够尝试重新连接服务端。 #### 处理消息事件 当成功建立了 WebSocket 连接之后就可以监听来自服务器的消息了。可以通过定义全局混入或者组件内部的方法处理这些事件: ```javascript export default { created() { this.$options.sockets.onmessage = (data) => { console.log('Message received:', data); } this.$options.sockets.onerror = (error) => { console.error('Error occurred:', error); } this.$options.sockets.onopen = () => { console.info('Connection opened'); } this.$options.sockets.onclose = () => { console.warn('Connection closed'); } }, } ``` 上述代码片段说明了怎样捕获不同类型的 WebSocket 通信事件(如接收新消息、发生错误等),并将它们绑定至相应的回调函数上进行进一步的操作或显示提示信息给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值