vue2中websocket的使用

本文介绍了如何在项目中通过WebSocket实现从服务器向浏览器端主动发送消息,包括创建WebSocket连接、心跳检测机制、错误处理和关闭连接的方法,以及在AntDesignVue框架下的应用。
摘要由CSDN通过智能技术生成

        项目中需要在某些情况主动给浏览器端发送消息,浏览器接收后做相应的处理。实现方法如下:

创建websocket.js:

import store from '@/store'
import Cookie from 'js-cookie'
import {notification } from 'ant-design-vue'


var websocket = null;
let rec; //用来存储延迟请求的代码
let isConnect = false; //连接标识 避免重复连接
let checkMsg = "heartbeat"; //心跳发送/返回的信息 
const baseUrl = process.env.VUE_APP_WEBSOCKET_URL // ws的地址
var globalCallback = function () {};

let createWebSocket = () => {
    try {
        initWebSocket(); 
    } catch (e) {
        reConnect(); 
    }
};

//重连
let reConnect = () => {
    if (isConnect) return; 
    rec && clearTimeout(rec);
    rec = setTimeout(function () { 
        createWebSocket();
    }, 10000);
};
//关闭连接
let closeWebSocket = () => {
  websocket.close();
};
//心跳设置
var heartCheck = {
    timeout: 20000, 
    timeoutObj: null, 

    start: function () {
        this.timeoutObj = setTimeout(function () {
            if (isConnect) websocket.send(checkMsg);
        }, this.timeout);
    },

    reset: function () {
        clearTimeout(this.timeoutObj);
        this.start();
    }
};

// 初始化websocket
function initWebSocket() {

    const userKey = xxxx // 生成的唯一编码
    var ws = baseUrl + '?userKey ='+userKey 
     websocket = new WebSocket(ws) //
    websocket.onmessage = function (e) {
        websocketonmessage(e)
    }
    websocket.onclose = function (e) {
        websocketclose(e)
    }
    websocket.onopen = function () {
        websocketOpen()
        heartCheck.start();
    }
    websocket.onerror = function () {
        isConnect = false; 
        reConnect(); 
    }
}


// 接收消息
function websocketonmessage(e) {
   if(e && e.data){
        try{
            ...
           // 需要处理的事件
                
        }catch(error){
            
        }
   }else{
    heartCheck.reset();
   }
   
}

// 数据发送
function websocketsend(agentData) {
    websocket.send(JSON.stringify(agentData))
}

// 关闭
function websocketclose(e) {
    isConnect = false 
}

function websocketOpen() {
    
}


// 将方法暴露出去
export {
    createWebSocket,
    closeWebSocket
}

Vue2使用WebSocket,可以通过创建一个WebSocket实例并在Vue组件使用它来实现。以下是一个简单的示例: 1. 首先,安装WebSocket库: ```shell npm install --save ws ``` 2. 在Vue组件引入WebSocket库并创建WebSocket实例: ```javascript import WebSocket from 'ws'; export default { data() { return { ws: null, url: 'ws://localhost:8080' // WebSocket服务器地址 }; }, created() { this.initWebSocket(); }, methods: { initWebSocket() { this.ws = new WebSocket(this.url); this.ws.onopen = () => { console.log('WebSocket连接成功!'); }; this.ws.onmessage = (event) => { console.log('接收到消息:', event.data); }; this.ws.onclose = () => { console.log('WebSocket连接关闭!'); }; this.ws.onerror = (event) => { console.log('WebSocket连接错误:', event); }; }, sendMessage() { this.ws.send('Hello WebSocket!'); } } }; ``` 在上面的代码,我们首先引入了WebSocket库,然后在Vue组件的data选项定义了WebSocket实例和WebSocket服务器地址。在created钩子函数,我们调用了initWebSocket方法来创建WebSocket实例并监听WebSocket的各种状态。在methods选项,我们定义了一个sendMessage方法来发送消息。 3. 在Vue模板使用WebSocket: ```html <template> <div> <button @click="sendMessage">发送消息</button> </div> </template> ``` 在上面的代码,我们在Vue模板添加了一个按钮,当用户点击按钮时,会调用sendMessage方法来发送消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值