Vue-全局websocket 实现消息推送

2 篇文章 0 订阅
2 篇文章 1 订阅

 在上一篇文章 WebSocket 消息推送https://blog.csdn.net/qq_63312957/article/details/125375122?spm=1001.2014.3001.5502 中已经简单描述了如何使用 springboot  vue websocket 实现数据推送,建议先阅读之前的文章之后,再来阅读本篇文章。

新建global.js文件

export default {
    ws: {},
    setWs: function(newWs) {
        this.ws = newWs
    }
}

一:main.js 文件中增加

import globalWebSocket from './js/global.js'
Vue.prototype.$globalWebSocket = globalWebSocket

 二:app.vue中添加

 created() {
    this.initWebSocket();
  },
  methods:{
    //app.vue
    initWebSocket() {
      let that = this;
      if ("WebSocket" in window) {
        console.log("您的浏览器支持 WebSocket!");
        that.ws = new WebSocket(`ws://192.168.1.26:8082/api/websocket`);
        that.$globalWebSocket.setWs(that.ws);
        // that.ws.onopen = that.onopen();
        that.ws.onopen = function() {console.log('webSocket connect successful')};
        that.ws.onclose = function() {
          // 关闭 websocket
          console.log("webSocket connect closed");
          setTimeout(() => {
            that.initWebSocket();
          }, 2000);
        };
      } else {
        // 浏览器不支持 WebSocket
        console.log("您的浏览器不支持 WebSocket!");
      }
    },

三:需使用的页面,保留getMessage方法,只需添加handleMsg方法,将getMessage方法作为接收数据方法,并在mounted函数中加载hanleMsg即可

<template>
	<div>
	<div id="chart" style="width: 700px; height: 200px;"></div>
	</div>
</template>
 
<script>
	export default{
		name:"chart",
		data(){
			return{
				yAxis:[],
				xAxis:[],
			}
		},
		mounted() {
			this.chart();
			this.handleMsg();
		},
		methods:{
         handleMsg() {
            this.$globalWebSocket.ws.onmessage = this.getMessage
         },
        //接收服务器发来的消息
         getMessage: function (e) {
            console.log(e.data);
            this.xAxis = JSON.parse(e.data).xAxis;
            this.yAxis = JSON.parse(e.data).yAxis;
            this.chart();
          },
      
          chart(){
         //有的话就获取已有echarts实例的DOM节点。
      var mychart = this.$echarts.getInstanceByDom(document.getElementById('timechart')); 
             if (mychart == null) { // 如果不存在,就进行初始化。
                 mychart = this.$echarts.init(document.getElementById('chart'));
             }
        var option = {
          title: {
            text: '时间(ms)/阶段'
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            // data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
          },
          grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
          },
          toolbox: {
            feature: {
              saveAsImage: {}
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: this.xAxis
          },
          yAxis: {
            type: 'value'
          },
          series: [
            {
              type: 'line',
              stack: 'Total',
              data: this.yAxis
            }
          ]
        };
        mychart.setOption(option);
      }
    
	}
</script>
 
<style>
</style>

如果你恰好需要读到这篇文章,希望对你有帮助。如有写的不对或不够好的地方,欢迎指正。

  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue.js是一种流行的JavaScript框架,用于构建用户界面。它提供了一种简洁、灵活的方式来实现前端开发。WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议,可以实现实时消息推送。 在Vue.js实现WebSocket消息推送可以通过以下步骤: 1. 首先,安装WebSocket库。可以使用npm或yarn来安装,例如:`npm install vue-native-websocket`。 2. 在Vue.js的入口文件(通常是main.js)中导入WebSocket库,并配置WebSocket连接。示例代码如下: ```javascript import VueNativeSock from 'vue-native-websocket'; Vue.use(VueNativeSock, 'ws://localhost:8080', { format: 'json', reconnection: true, reconnectionAttempts: 5, reconnectionDelay: 3000, }); ``` 上述代码中,我们使用了`vue-native-websocket`库,并配置了WebSocket连接的URL、数据格式以及重连选项。 3. 在Vue组件中使用WebSocket。可以通过在组件中添加`this.$socket`来访问WebSocket实例,并监听相应的事件。例如: ```javascript export default { mounted() { this.$socket.addEventListener('message', this.handleMessage); }, methods: { handleMessage(event) { // 处理接收到的消息 }, sendMessage(message) { this.$socket.send(message); }, }, }; ``` 上述代码中,我们在组件的`mounted`钩子函数中监听了`message`事件,并定义了处理接收到消息的方法`handleMessage`。同时,我们还定义了一个`sendMessage`方法来发送消息。 这样,当WebSocket连接建立后,就可以通过`this.$socket.send()`方法发送消息,并通过`this.$socket.addEventListener()`方法监听接收到的消息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值