WebSocket异步导出

WebSocket异步导出

    • 1、安装sockjs-client和stompjs
    • 2、连接后台
    • 3、vite.config.ts 配置反向代理
    • 4、导出并实时通信
    • 5、 封装WebSocket 文件
    • 注册登录(城通网盘)

1、安装sockjs-client和stompjs

import SockJS from 'sockjs-client/dist/sockjs.min.js'
import Stomp from 'stompjs'

2、连接后台

let base_url = '/api/****'
//创建STOMP连接
let socket = new SockJS(sockUrl)
// 获取STOMP子协议的客户端对象
this.stompClient = Stomp.over(socket);
// 心跳发送频率
this.stompClient.heartbeat.outgoing = 60000;
// 心跳接收频率
this.stompClient.heartbeat.incoming = 120000;
// 调用.connect方法连接Stomp服务端进行验证
this.stompClient.connect({}, (frame) => {console.log('Connected: ' + frame);// 订阅服务端提供的某个topic  如用户idthis.stompClient.subscribe('/topic/***/' + this.$route.params.id, (frame) => {console.log('Received message:', JSON.stringify(frame.body));})
});

3、vite.config.ts 配置反向代理

原因:SockJS 使用https和http 传输

  // 服务端渲染server: {port: env.VITE_PORT, // 端口号host: "0.0.0.0",open: env.VITE_OPEN === 'true',// 本地跨域代理. 目前注释的原因:暂时没有用途,server 端已经支持跨域proxy: {['/api']: {target: 'http://*****/api',ws: false,rewrite: (path) => path.replace(new RegExp(^/api‘), ''),},}}

4、导出并实时通信

import WebSocketService from '@/utils/websocket'
const exportLoading = ref(false)  //异步导出加载中
const exportData = ref(false)     //导出结果提示
// 异步导出
const handleAsynExport = async () => {exportLoading.value = truetry {await AsynExportApi.exportSales(queryParams.value)if (WebSocketService?.stompClient == null) {// 建立 Websocket连接,  /topic/***/${id}  是后端提供的const destination = `/topic/***/${id}`WebSocketService.connect(destination, handleMessage)}} finally {setTimeout(() => {if (!exportData.value) {ElNotification.error({title: '提示',message: '导出失败,请稍后重试'})}exportLoading.value = false}, 3000)}
//弹窗下载链接
const handleMessage = (data: any) => {exportData.value = trueexportLoading.value = falseElNotification.success({title: '提示',message: h('p', null, [h('span', null, data.fileName + '加载成功,请'),h('a',{style: 'color: teal;cursor:pointer;text-decoration: underline;',onClick: () => {location.replace(data.filePath)}},'下载')])})
}//页面切换后断开连接
useRouter().afterEach(() => {if (WebSocketService?.stompClient !== null) {//断开Websocket连接WebSocketService.disconnect()}
})

5、 封装WebSocket 文件

下载 :WebSocket 封装 访问密码: 3146

注册登录(城通网盘)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于神经网络的视频编码NNVC(1):帧内预测

在H.266/VVC发布后,基于传统编码框架提升压缩率越来越难,随着深度学习的发展,研究人员开始尝试将神经网络引入编码器。为此,JVET工作组在2020年成立AHG11小组来专门进行基于神经网络的视频编码的研究。 为了方便研究,工…

C语言初阶牛客网刷题—— HJ97 记负均正【难度:简单】

1. 题目描述 牛客网在线OJ题 1、首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和所有正整数的平均值, 结果保留一位小数。 注意: 0 即不是正整数,也不是负数,不计入计算&…

算法基础 -- 算法竞赛基础学习指南

算法竞赛基础学习指南 算法竞赛(如 ACM-ICPC、CCPC、NOI、LeetCode 周赛、Codeforces 等)是一项考察编程能力、算法知识和逻辑思维的综合性竞赛。要在竞赛中取得优异成绩,需要打下扎实的基础,积累丰富的经验。本文将从多个方面整…

蒙操作系统(HarmonyOS)

鸿蒙操作系统(HarmonyOS)是由华为技术有限公司开发的面向未来、面向全场景的分布式操作系统。它旨在为各种不同类型的设备提供统一的操作系统和无缝的智能体验,从智能手机到可穿戴设备,再到智能家居产品等。在鸿蒙的应用生态中&am…

【Web开发】一步一步详细分析使用Bolt.new生成的简单的VUE项目

https://bolt.new/ 这是一个bolt.new生成的Vue小项目,让我们来一步一步了解其架构,学习Vue开发,并美化它。 框架: Vue 3: 用于构建用户界面。 TypeScript: 提供类型安全和更好的开发体验。 Vite: 用于快速构建和开发 主界面如下&#xff1a…

Rabbitmq高级特性之消费方确认

背景: 发送方发送消息之后,到达消费端之后,可能会有以下情况:消息处理成功,消息处理异常。RabbitMQ在向消费者发送消息之后,就会把这条消息给删除掉,那么第二种情况,就会造成消息丢…

基于微信小程序的健身管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Couchbase UI: Server

在 Couchbase UI 中的 Server(服务器)标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍: 1. 节点列表 显示集群中所有节点的列表,每个节点的详细信息包括: 节点地址&#xff1…

Spark Streaming编程基础

文章目录 1. 流式词频统计1.1 Spark Streaming编程步骤1.2 流式词频统计项目1.2.1 创建项目1.2.2 添加项目依赖1.2.3 修改源目录1.2.4 添加scala-sdk库1.2.5 创建日志属性文件 1.3 创建词频统计对象1.4 利用nc发送数据1.5 启动应用,查看结果 2. 编程模型的基本概念3…

git和idea重新安装后提交异常

场景:我重装了系统,idea装了2024.3版本的,git也重新装了,但是项目中还是有.git文件夹的,下载了idea的码云插件后,提交报错如下: 异常:Error updating changes: detected dubious ow…

Pix2Pix:图像到图像转换的条件生成对抗网络深度解析

在深度学习的广阔领域中,图像到图像的转换任务一直是研究者和开发者们关注的热点。Pix2Pix,作为一种基于条件生成对抗网络(Conditional Generative Adversarial Networks, CGANs)的模型,自2017年由Phillip Isola等人提…

OpenCV imread函数读取图像__实例详解

OpenCV imread函数读取图像__实例详解 本文目录: 零、时光宝盒 一、imread函数定义 二、imread函数支持的文件格式 三、imread函数flags参数详解 (3.1)、Flags-1时,样返回加载的图像(使用alpha通道,否…

Spring 框架基础:IOC 与 AOP 原理剖析及面试要点

在上一篇中,我们深入探讨了 Java 反射机制,了解了它在运行时动态操作类和对象的强大能力。而今天,我们将进入 Spring 框架的世界。Spring 框架作为 Java 企业级开发中最流行的框架之一,极大地简化了企业级应用的开发过程。对于春招…

ssm基于HTML5的红酒信息分享系统

SSM基于HTML5的红酒信息分享系统是一个专注于红酒领域的综合性信息平台,旨在为红酒爱好者、从业者以及普通消费者提供一个便捷的交流与获取红酒相关信息的空间。 一、系统背景与意义 随着人们生活水平的提高和消费观念的转变,红酒作为一种高雅的饮品&a…

【python】subprocess.Popen执行adb shell指令进入linux系统后连续使用指令,出现cmd窗口阻塞问题

问题描述 subprocess.Popen执行adb shell指令进入linux系统后出现cmd窗口阻塞问题,需要手动关闭cmd才会继续执行其他指令。 解决方案 1、cmd指令后面加入exit\n关闭exe进程 2、subprocess.Popen()添加内置参数creationflagssubprocess.CREATE_NO_WINDOW隐藏窗口弹…

细说机器学习算法之过拟合与欠拟合

系列文章目录 第一章:Pyhton机器学习算法之KNN 第二章:Pyhton机器学习算法之K—Means 第三章:Pyhton机器学习算法之随机森林 第四章:Pyhton机器学习算法之线性回归 第五章:Pyhton机器学习算法之有监督学习与无监督…

深度学习中的通道(Channel)概念详解

1. 通道的基本概念 通道(Channel)是深度学习中的一个重要概念,它在不同场景下有不同的具体含义。理解通道概念对于理解深度学习模型的结构和工作原理至关重要。 2. 大语言模型中的通道 2.1 全连接层的通道概念 2.1.1 基本结构 输入:[batch_size, in…

Windows Docker Desktop安装及使用 Docker 运行 MySQL

Docker Desktop是Docker的官方桌面版,专为Mac和Windows用户设计,提供了一个简单易用的界面来管理和运行Docker容器。它集成了Docker引擎,为开发人员提供了一个快速、可靠、可扩展的方式来构建、运行和管理应用。DockerDesktop的优势在于&…

TTL 在 Redis 缓存中的作用

Redis TTL(Time To Live)与缓存的关系 TTL(Time To Live,生存时间)是 Redis 提供的一种自动过期机制,用于控制键值对的存活时间。当 TTL 到期后,Redis 会自动删除该键,避免长期占用…

人形机器人,自动驾驶“老炮”创业第二站

造一台人形机器人,或许正在成为2025年最炙手可热的事情。 从去年第四季度开始,伴随着大模型应用的深入,具身智能概念被点燃,其中最鲜明的一个特点是,大量自动驾驶大佬的转行加入。 随便说几个比较有分量的&#xff0…