当前位置: 首页 > article >正文

vue项目中使用websocket

一、单文件中引入使用

<template></template>
<script>
    export default {
        websocket: true, // 标志需要使用WebSocket
        data () {
            return {
                ws: null
            }
        },
        created () {
            this.ws = new WebSocket('ws://127.0.0.1:8000'); // ws服务地址
            this.ws.onopen = () => {
                // 接收服务端消息
                this.ws.onmessage = res => {
                    console.log(res.data);
                    // 注:res.data是字符串类型,有需要可通JSON.parse进行转换
                }
                // 发送消息到服务端
                this.ws.send('测试数据');
                // 注:发送的数据需要是字符串类型,有需要可通过JSON.stringify转换
            }
        },
        beforeDestroy () {
            if (this.ws) {
                this.ws.close(); // 断开服务连接
                this.ws = null;
            }
        }
    }
</script>

二、全局引入使用

1、封装websocket.js

const WebSocketPlugin = {
  install(Vue) {
    let ws = null;
    Vue.prototype.$websocket = {
      init (url) {
        ws = new WebSocket(url);
      },
      send(message) {
        if (ws && ws.readyState === WebSocket.OPEN) {
          ws.send(message);
        }
      },
      onMessage(callback) {
        ws && (ws.onmessage = callback);
      },
      onOpen(callback) {
        ws && (ws.onopen = callback);
      },
      onClose() {
        ws && ws.close();
      },
      onError(callback) {
        ws && (ws.onerror = callback);
      }
    }
  }
}
export default WebSocketPlugin;

main.js全局引入

import Vue from "vue";
import WebSocketPlugin from './websocket.js';
Vue.use(WebSocketPlugin);

2、页面使用

<template>
</template>
<script>
    export default {
        websocket: true, // 标志需要使用WebSocket
        created () {
            this.$websocket.init('ws://127.0.0.1:8000');
            this.$websocket.onOpen(() => {
                // 接收服务端消息
                this.$websocket.onMessage(res => {
                    console.log(res.data);
                })
                // 发送消息到服务端
                this.$websocket.send('测试数据');
            })
        },
        beforeDestroy () {
            this.$websocket.onClose();
        }
    }
</script>

http://www.kler.cn/news/355457.html

相关文章:

  • MAC地址漂移实验
  • 【ShuQiHere】智慧城市(Smart City)全面指南:AI如何重塑城市生活 ️
  • [图形学]蒙特卡洛积分方法介绍及其方差计算
  • AcWing 3817:数组 ← 贪心算法
  • JavaWeb 23.NPM配置和使用
  • HTML5教程(四) - 结构标签
  • git+cmake将Open3D配置到visual studio
  • Android中 tools:text 和 android:text区别
  • Java JDK的面试题
  • Redis基础篇(含redis在linux环境下的安装教程,以及用docker安装redis的教程)
  • 【Linux驱动开发】嵌入式Linux驱动开发基本步骤,字符设备开发入门,点亮LED
  • Python知识梳理总结思维导图
  • SpringBoot实现的物流优化策略
  • 笔记整理—linux网络部分(2)Linux网络框架
  • 如何成为 Rust 核心贡献者?Rust 开发的核​​心是什么?Rust 重要技术专家揭秘
  • Redis登录校验
  • 在电脑上免费分区的 5 个有效磁盘分区软件工具
  • flume 负载均衡 详解
  • 2024年电子信息与信号处理国际学术研讨会(EISP 2024,2024年11月15-17日)
  • JavaWeb合集15-Apache POI