WebSocket在vue项目中的使用

本文详细介绍了WebSocket在项目中的应用,包括其定义、属性及如何创建和管理WebSocket连接。通过具体代码示例,展示了前端如何实时渲染后台消息,实现与服务器的双向通信。

1、使用背景:项目前端需要实时渲染后台传回的消息。
2、WebSocket 的定义是:是一个对象,用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据。
WebSocket 对象经常使用到的属性有一下这些:

  • WebSocket.onopen:用于指定连接成功后的回调函数
  • WebSocket.onmessage:用于指定当从服务器接受到信息时的回调函数
  • WebSocket.onclose:用于连接关闭后的回调函数
  • WebSocket.onerror:用于连接关闭后的回调函数
  • WebSocket.readyState:当前的链接状态
  • WebSocket.url:WebSocket的绝对路径
  • WebSocket.protocol:服务器选择的下属协议
    3、使用 WebSocket 需要先创建一个 WebSocket 的对象:new WebSocket(url)
    4、下面是在项目中使用的具体代码
methods: {
	// 初始化一个 websocket 对象,同时给基本属性赋值
	initWebSocket: function () {
        let host = window.location.host; // 这个 host 根据具体接口的实际情况自行定义 
        // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https,此处传入需要跟后台连接的接口路径
        this.websock = new WebSocket(`ws://${host}/api-tframe/atf/${this.form.projectId}`);
        this.websock.onopen = this.websocketonopen;
        this.websock.onerror = this.websocketonerror;
        this.websock.onmessage = this.websocketonmessage;
        this.websock.onclose = this.websocketclose;
    },
    // 定义 websocket open属性的函数
	websocketonopen: function () {
        console.log('WebSocket连接成功');
    },
    // 定义 websocket onerror属性的函数
    websocketonerror: function (e) {
        console.log('WebSocket连接发生错误');
    },
    // 定义 websocket onmessage属性的函数
    websocketonmessage: function (e) {
        console.log('e:', e.data);
        this.messageList.push(e.data);
    },
    // 定义 websocket onclose属性的函数
    websocketclose: function (e) {
        console.log('connection closed');
    }
},
created () {
	// 调用初始化函数(这个可以根据具体业务在具体操作下初始化)
     this.initWebSocket();
},
// 页面销毁时关闭 websocket 的连接
destroyed () {
 	 this.websocketclose();
}
Vue 3 中使用 WebSocket 有多种方式,以下进行详细介绍: ### 使用原生 WebSocket API 在 Vue 3 中可以使用原生WebSocket API 来集成 WebSocket。在 Vue 组件里创建 WebSocket 实例,建议在 `mounted` 生命周期执行,示例代码如下: ```vue <template> <!-- 组件模板 --> </template> <script> export default { data() { return { socket: null, messages: [] }; }, mounted() { this.socket = new WebSocket('wss://your-server-endpoint'); // 可以添加事件监听,如消息接收、连接打开、连接关闭等 this.socket.addEventListener('message', (event) => { this.messages.push(event.data); }); this.socket.addEventListener('open', () => { console.log('WebSocket 连接已打开'); }); this.socket.addEventListener('close', () => { console.log('WebSocket 连接已关闭'); }); } }; </script> ``` 这段代码在 `mounted` 生命周期创建 WebSocket 实例,并对消息接收、连接打开和关闭事件进行监听 [^3]。 ### 封装使用 还可以将 WebSocket 封装后在 Vue 3 + TypeScript 项目使用。首先引入相关文件和配置,示例代码如下: ```typescript import useWebSocket from '@/utils/websocket'; import config from '@/config'; const wsOptions = { url: config.wbBaseURL }; const { open, close, reconnect, on, send } = useWebSocket(wsOptions); import { onMounted } from 'vue'; let receivedMessage; onMounted(() => { open(); // 在 onMounted 钩子中调用 open 函数,连接 WebSocket // 注册消息接收处理函数 on('message', (data) => { receivedMessage = data; console.log(data); }); }); ``` 上述代码通过引入封装好的 `useWebSocket` 函数,根据配置创建 WebSocket 实例,在 `onMounted` 钩子中打开连接,并注册消息接收处理函数 [^4]。 ### 项目使用步骤总结 在 Vue 项目使用 WebSocket 实现实时通信功能,通常需要以下步骤: 1. 进行代理配置(如果需要)。 2. 对 WebSocket 进行封装,如封装成工具函数或类。 3. 在 Vue 组件中使用封装好的 WebSocket 实现具体功能,如消息接收、发送等。 通过这些步骤可以在项目中顺利使用 WebSocket 实现实时通信功能,适用于构建即时聊天应用、实时数据展示平台等 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值