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

websocket链接

1,utils/websocketService

// src/utils/websocketService.ts
import { ref } from 'vue';
// import { baseURL } from './http';
const isConnected = ref(false);
let socket: WebSocket | null = null;// 连接 WebSocket
const connect = (): void => {// const url = baseURL.split('//')[1];// socket = new WebSocket(`ws://${url}/webSocket/${token}`);
//  const url = `ws://192.168.1.42:9400/api/client-api-server/ws/listen?token=${actualToken}`;socket = new WebSocket(`ws://192.168.1.42:8411/api/client-api-server/ws/listen`);socket.onopen = () => {console.log("WebSocket连接已建立");isConnected.value = true;};socket.onmessage = (event: MessageEvent) => {console.log("收到消息:", event.data);// 这里可以处理接收到的消息};socket.onerror = (error: Event) => {console.error("WebSocket错误:", error);};socket.onclose = (event: CloseEvent) => {console.log("WebSocket连接已关闭", event);isConnected.value = false;};
};// 发送消息
const sendMessage = (message: string): void => {if (socket && isConnected.value) {socket.send(message);} else {console.error("WebSocket未连接,无法发送消息");}
};// 关闭 WebSocket 连接
const close = (): void => {if (socket) {socket.close();}
};// 导出相关功能
export { connect, sendMessage, close, isConnected, socket };

2.页面引用

1.

处理 WebSocket 消息通知,根据不同的消息码(code)执行相应操作:

  1. code 209:显示任务进度条,更新进度百分比
  2. code 200:标记任务为完成状态,更新图片数据
  3. code 202:标记任务为失败状态
  4. code 300:根据队列类型(queueType)更新任务队列信息,包括总数量和排序

整体用于实时更新 AI 绘图任务的状态和进度。

onMounted(async () => {// await getRecentlySelectBsGenerategraph()const messageHandler = (event: MessageEvent) => {const dataArry = JSON.parse(event.data)if (dataArry.code == 209) {msgShow.value = truetaskId.value = dataArry.taskIdif (!dataArry.data.completed) {percentage.value = Math.floor(dataArry.data.progress * 100)} else {percentage.value = 100}} else if (dataArry.code == 200) {msgShow.value = falsedataList.value.forEach((item: any) => {if (item.taskId === dataArry.taskId) {item.status = '1'item.children = dataArry.generategraphUrl}});console.log(dataList.value, 999991)// emit('getSelectBsGenerategraph',);} else if (dataArry.code == 202) {msgShow.value = falsedataList.value.forEach((item: any) => {if (item.taskId === dataArry.taskId) {item.status = '2'}});// emit('getSelectBsGenerategraph',);} else if (dataArry.code == 300) {if (dataArry.queueType == 0) {dataList.value.forEach((item: any) => {if (Number(item.jsMessageSort) > 0) {// 直接修改属性item.jsMessageTotal = dataArry.total;}});} else if (dataArry.queueType == 1) {dataList.value.forEach((item: any) => {if (Number(item.jsMessageSort) > 0) {// 直接修改属性if (Number(item.jsMessageSort) > Number(dataArry.sort)) {item.jsMessageSort = item.jsMessageSort - 1;}item.jsMessageTotal = item.jsMessageTotal - 1;}});} else if (dataArry.queueType == 2) {dataList.value.forEach((item: any) => {if (Number(item.jsMessageSort) > 0) {// 直接修改属性item.jsMessageSort = item.jsMessageSort - 1;item.jsMessageTotal = item.jsMessageTotal - 1;}});}}};if (socket) {socket.onmessage = messageHandler; // 设置消息处理程序}})

2.简单应用

import { connect, close } from '@/utils/websocketService';

onMounted(() => {

    connect(store.token); //

    connect1(store.client_id); //

});

http://www.dtcms.com/a/405954.html

相关文章:

  • 【oceanbase】Oracle模式查看pl慢sql
  • 电子商务网站规划的流程网站备案申请模板
  • 旺道网站优化公众号怎么推广
  • 内存卡标识全解析:从存储到性能的密码
  • 动态的魔法:列表与条件渲染
  • 乐清联科网站建设wordpress divi 数据
  • ARM单片机中断及中断优先级管理详解
  • python软件操作
  • c++_day2
  • 数据通信与计算机网络-交换
  • 2026考研时间,定了
  • 转:Ubuntu20.04安装NVIDIA驱动+CUDA超详细安装指南
  • 软件系统设计课程-Day1-从用户投诉到系统需求
  • 飞浪网站建设网站开发毕业设计任务书
  • JavaScript学习笔记(十二):call、apply和bind使用指南
  • Java外功基础(1)——Spring Web MVC
  • 【双机位A卷】华为OD笔试之【DP】双机位A-构建数列【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割实践技术应用
  • 基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化实践技术应用
  • Kafka如何保证消息可靠性
  • 前端面经-高级开发(华为od)
  • 网站建设与 维护实训报告范文wordpress 上传网站吗
  • 基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统
  • 网站建立时间软件开发5个过程
  • 【微实验】激光测径系列(六)MATLAB 实现 CCD 图像像素与实际距离标定
  • 设计模式之代理模式-骆驼与巴巴羊的故事
  • Linux安全机制--系统层安全机制
  • 大模型之bert变种
  • 华为HCIE认证-“天花板”级考试的难度解析
  • 【网络协议】数字签名与证书