提交 e133a643 authored 作者: liujiaxing's avatar liujiaxing

最新代码--4.10

上级 c1af309f
......@@ -24,6 +24,6 @@
# VITE_API_URL = /prod-api
VITE_API_URL = /api
# 线上环境部署
VITE_WS_URL = 121.229.107.155:19021
# VITE_WS_URL = 121.229.107.155:19021
# 本地环境部署
# VITE_WS_URL = 127.0.0.1:19021
\ No newline at end of file
VITE_WS_URL = 127.0.0.1:19021
\ No newline at end of file
......@@ -106,12 +106,12 @@ import { ElLoading, ElMessage } from 'element-plus'
import Loading from '@/pages/all/components/loadingComponent/index.js'
import { ref, onMounted, onUnmounted, computed, watch, nextTick, watchEffect } from 'vue';
import wss from '@/utils/requestSocekt.js'
import wsTime from '@/utils/requestSocektTime.js'
import { getTimewss, createWebSocket } from '@/utils/requestSocektTime.js'
import useAppStore from '@/store/module/app'
import dayjs from 'dayjs';
const wssInstance = ref(wss)
const wsTimeInstance = ref(wsTime)
let wsTimeInstance = ""; //时间ws实例
// import { loading } from 'vxe-pc-ui';
// 用于表示速度改变时,正常数据返回后才能够再次改变速度
const speedChangedNormalDataBack = ref(false)
......@@ -247,52 +247,44 @@ const compareTime = (time1, time2) => {
};
const wsTimeInstanceFn = () => {
console.log('架子啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊');
if (wsTimeInstance.value) {
console.log(wsTimeInstance.value, '链接------------------------');
(wsTimeInstance.value).onmessage = (event) => {
console.log(selectedEndTime.value, '时间对比------------------------');
const data = JSON.parse(event.data);
// console.log('data', data)
console.log(selectedEndTime.value, '时间对比------------------------', useAppStoreInstance.globalLeftWssCONTINE.type);
if (useAppStoreInstance.globalLeftWssCONTINE.type === "realtime") {
startDateTime.value = data.startTime;
endDateTime.value = data.endTime;
const currentEndTimeMs = selectedEndTime.value
? selectedEndTime.value.getTime()
: null;
nextTick(() => {
// 只刷新刻度,不调 updateTimeline(它会重置滑块)
generateTimelineDates();
// 把滑块按比例映射到新时间范围
if (currentEndTimeMs) {
const newStartMs = new Date(data.startTime).getTime();
const newEndMs = new Date(data.endTime).getTime();
const newTotalMs = newEndMs - newStartMs;
if (newTotalMs > 0) {
// 当前时间在新范围中的百分比位置
const newPercent = ((currentEndTimeMs - newStartMs) / newTotalMs) * 100;
// 限制在 0~100
endHandlePercent.value = Math.max(0, Math.min(100, newPercent));
}
}
console.log('架子啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊', wsTimeInstance);
wsTimeInstance.onmessage = (event) => {
console.log(selectedEndTime.value, '时间对比------------------------');
const data = JSON.parse(event.data);
// console.log('data', data)
console.log(data, '时间------------------------', useAppStoreInstance.globalLeftWssCONTINE.type);
// if (useAppStoreInstance.globalLeftWssCONTINE.type === "realtime") {
startDateTime.value = data.startTime;
endDateTime.value = data.endTime;
const currentEndTimeMs = selectedEndTime.value
? selectedEndTime.value.getTime()
: null;
// 同步选中时间
updateSelectedTimes();
});
nextTick(() => {
// 只刷新刻度,不调 updateTimeline(它会重置滑块)
generateTimelineDates();
// 把滑块按比例映射到新时间范围
if (currentEndTimeMs) {
const newStartMs = new Date(data.startTime).getTime();
const newEndMs = new Date(data.endTime).getTime();
const newTotalMs = newEndMs - newStartMs;
if (newTotalMs > 0) {
// 当前时间在新范围中的百分比位置
const newPercent = ((currentEndTimeMs - newStartMs) / newTotalMs) * 100;
// 限制在 0~100
endHandlePercent.value = Math.max(0, Math.min(100, newPercent));
}
}
}
// 同步选中时间
updateSelectedTimes();
});
// }
}
}
const preTimeWindowEnd = ref(null);//下一个时间窗口结束时间
const preTimeAllDate = ref(null);//上一条完整数据
......@@ -1382,6 +1374,9 @@ const resetclick = () => {
}
const tempDateTime = ref(new Date(useAppStoreInstance.globalTimeLineEndSelectTime))
onMounted(() => {
createWebSocket();
// console.log();
wsTimeInstance = getTimewss()
wsTimeInstanceFn();//接受实时模式下的数据
wssMessageHandle();// 只在初始化时注册一次消息处理器
//进入前时间
......@@ -1584,6 +1579,7 @@ onUnmounted(() => {
useAppStoreInstance.setGlobalIsRealtimeBeforeSub(is_flag_isRealtime.value);
useAppStoreInstance.setGlobalSubsystemSelectedTimeRange(getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime));
console.log(is_flag_isRealtime.value, '判断状态');
wsTimeInstance.close()
// is_flag_isRealtime--true代表实时模式,false--代表历史模式
//console.log("jieshuli 1,组件卸载时要发暂停",getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[0],getDayRangeFromTime(useAppStoreInstance.globalTimeLineEndSelectTime)[1]);
// 储存跳转前的模式--实时模式-true,还是历史模式-false
......
......@@ -6,34 +6,51 @@ let Timewss = null;
let timer = null;
const appStore = useAppStore();
function createWebSocket() {
function createWebSocket(options = {}) {
if (Timewss && Timewss.readyState === WebSocket.OPEN) {
console.log('TimeWebSocket已连接,无需重复创建');
// 如果有新传入的 onmessage,更新它
if (options.onmessage) {
Timewss.onmessage = options.onmessage;
}
return Timewss;
}
Timewss = new WebSocket(apiUrl);
Timewss.onopen = () => {
console.log('TimeWebSocket已连接');
options.onopen?.();
};
Timewss.onmessage = (event) => {
console.log('Time接收到消息:', event.data);
options.onmessage?.(event);
};
Timewss.onerror = (error) => {
console.error('WebSocket错误:', error);
options.onerror?.(error);
};
Timewss.onclose = () => {
console.log('连接关闭,1秒后重连...');
timer = setTimeout(() => {
Timewss = createWebSocket(); // 重新创建连接
createWebSocket(options); // 重新创建连接,保留回调
clearTimeout(timer);
timer = null; //释放内存
timer = null;
}, 1000);
};
return Timewss;
}
// 初始化连接
if (!Timewss || Timewss.readyState === WebSocket.CLOSED) {
createWebSocket();
// 获取当前 WebSocket 实例
function getTimewss() {
return Timewss;
}
export default Timewss;
\ No newline at end of file
export {
createWebSocket,
getTimewss
};
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论