Squashed commit of the following:
All checks were successful
local-test分支构建发布 / Docker-Build (push) Successful in 1m53s

commit 33292ca9b8
Author: joylink_fanyuhong <18706759286@163.com>
Date:   Tue Nov 12 09:17:32 2024 +0800

    订阅处理

commit cdcad825f7
Author: joylink_fanyuhong <18706759286@163.com>
Date:   Tue Nov 12 09:13:54 2024 +0800

    取消订阅调整

commit 44f7389132
Merge: 425d8e9 a2ae992
Author: joylink_fanyuhong <18706759286@163.com>
Date:   Mon Nov 11 18:18:43 2024 +0800

    Merge remote-tracking branch 'origin/develop' into develop

commit 425d8e986b
Author: joylink_fanyuhong <18706759286@163.com>
Date:   Mon Nov 11 18:16:10 2024 +0800

    处理订阅

commit a2ae99209f
Author: joylink_zhaoerwei <Bob_Engineer@163.com>
Date:   Mon Nov 11 17:48:52 2024 +0800

    订阅调整
This commit is contained in:
joylink_zhaoerwei 2024-11-12 09:49:53 +08:00
parent 40e11e0d67
commit 158aed62e6
6 changed files with 56 additions and 14 deletions

View File

@ -95,7 +95,10 @@ export function destroyLineApp(): void {
export function initLineApp(lineId: number): IGraphicApp { export function initLineApp(lineId: number): IGraphicApp {
lineApp = lineAppMap.get(lineId) || null; lineApp = lineAppMap.get(lineId) || null;
if (lineApp) return lineApp; if (lineApp) {
handleSubscribe(lineApp);
return lineApp;
}
lineApp = newGraphicApp({ lineApp = newGraphicApp({
interactiveGraphicTypeIncludes: [ interactiveGraphicTypeIncludes: [
Signal.Type, Signal.Type,
@ -258,6 +261,18 @@ export async function loadLineDatas(): Promise<IGraphicStorage> {
} }
} }
export function cancelSubscribe(lineApp: IGraphicApp) {
const lineStore = useLineStore();
const lineId = lineStore.lineId;
if (lineId) {
lineApp.unsubscribe(`/queue/line/${lineId}/device`);
lineApp.unsubscribe(`/queue/line/${lineId}/train`);
monitorDestinations.forEach((destination) => {
lineApp.unsubscribe(destination);
});
}
}
let monitorDestinations: string[] = [];
function handleSubscribe(lineApp: IGraphicApp) { function handleSubscribe(lineApp: IGraphicApp) {
const lineStore = useLineStore(); const lineStore = useLineStore();
const lineId = lineStore.lineId; const lineId = lineStore.lineId;
@ -312,7 +327,8 @@ function handleSubscribe(lineApp: IGraphicApp) {
}); });
const lineNetStore = useLineNetStore(); const lineNetStore = useLineNetStore();
const userStore = useUserStore(); const userStore = useUserStore();
getMonitorPath(userStore.roles).destinations.forEach((destination) => { monitorDestinations = getMonitorPath(userStore.roles).destinations;
monitorDestinations.forEach((destination) => {
lineApp.subscribe({ lineApp.subscribe({
destination, destination,
messageHandle: (message: Uint8Array) => { messageHandle: (message: Uint8Array) => {

View File

@ -52,7 +52,10 @@ export function destroyLineNetApp(): void {
} }
export function initLineNetApp(): IGraphicApp { export function initLineNetApp(): IGraphicApp {
if (lineNetApp) return lineNetApp; if (lineNetApp) {
handleSubscribe(lineNetApp);
return lineNetApp;
}
lineNetApp = newGraphicApp({ lineNetApp = newGraphicApp({
interactiveGraphicTypeIncludes: [ interactiveGraphicTypeIncludes: [
RunLine.Type, RunLine.Type,
@ -146,7 +149,15 @@ export async function loadLineNetDatas(): Promise<IGraphicStorage> {
} }
} }
function handleSubscribe(lineNetApp: IGraphicApp) { export function cancelSubscribe(lineNetApp: IGraphicApp) {
lineNetApp.unsubscribe('/queue/lineNet');
monitorDestinations.forEach((destination) => {
lineNetApp.unsubscribe(destination);
});
}
let monitorDestinations: string[] = [];
export function handleSubscribe(lineNetApp: IGraphicApp) {
const lineNetStore = useLineNetStore(); const lineNetStore = useLineNetStore();
lineNetApp.enableWsMassaging({ lineNetApp.enableWsMassaging({
wsUrl: `${getWebsocketUrl()}`, wsUrl: `${getWebsocketUrl()}`,
@ -165,7 +176,8 @@ function handleSubscribe(lineNetApp: IGraphicApp) {
}, },
}); });
const userStore = useUserStore(); const userStore = useUserStore();
getMonitorPath(userStore.roles).destinations.forEach((destination) => { monitorDestinations = getMonitorPath(userStore.roles).destinations;
monitorDestinations.forEach((destination) => {
lineNetApp.subscribe({ lineNetApp.subscribe({
destination, destination,
messageHandle: (message: Uint8Array) => { messageHandle: (message: Uint8Array) => {

View File

@ -7,7 +7,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, watch } from 'vue'; import { onMounted, onUnmounted, watch } from 'vue';
import { useLineStore } from 'src/stores/line-store'; import { useLineStore } from 'src/stores/line-store';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useLineNetStore } from 'src/stores/line-net-store'; import { useLineNetStore } from 'src/stores/line-net-store';
@ -80,7 +80,7 @@ function centerFaultDevice() {
} }
} }
// onUnmounted(() => { onUnmounted(() => {
// lineStore.destroy(); lineStore.cancelSubscribe();
// }); });
</script> </script>

View File

@ -7,7 +7,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, watch } from 'vue'; import { onMounted, onUnmounted, watch } from 'vue';
import { useLineNetStore } from 'src/stores/line-net-store'; import { useLineNetStore } from 'src/stores/line-net-store';
import { RunLine } from 'src/graphics/runLine/RunLine'; import { RunLine } from 'src/graphics/runLine/RunLine';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
@ -73,7 +73,7 @@ onMounted(() => {
} }
}); });
// onUnmounted(() => { onUnmounted(() => {
// lineNetStore.destroy(); lineNetStore.cancelSubscribe();
// }); });
</script> </script>

View File

@ -4,6 +4,7 @@ import {
initLineNetApp, initLineNetApp,
getLineNetApp, getLineNetApp,
destroyLineNetApp, destroyLineNetApp,
cancelSubscribe,
} from 'src/drawApp/lineNetApp'; } from 'src/drawApp/lineNetApp';
import { markRaw } from 'vue'; import { markRaw } from 'vue';
import { QTable } from 'quasar'; import { QTable } from 'quasar';
@ -72,6 +73,10 @@ export const useLineNetStore = defineStore('lineNet', {
this.selectedGraphics = []; this.selectedGraphics = [];
return app; return app;
}, },
cancelSubscribe() {
const app = this.getLineNetApp();
cancelSubscribe(app);
},
destroy() { destroy() {
this.selectedGraphics = null; this.selectedGraphics = null;
destroyLineNetApp(); destroyLineNetApp();

View File

@ -1,6 +1,11 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { IJlCanvas, JlGraphic, IGraphicApp } from 'jl-graphic'; import { IJlCanvas, JlGraphic, IGraphicApp } from 'jl-graphic';
import { initLineApp, getLineApp, destroyLineApp } from 'src/drawApp/lineApp'; import {
initLineApp,
getLineApp,
destroyLineApp,
cancelSubscribe,
} from 'src/drawApp/lineApp';
import { markRaw } from 'vue'; import { markRaw } from 'vue';
export const useLineStore = defineStore('line', { export const useLineStore = defineStore('line', {
@ -50,6 +55,10 @@ export const useLineStore = defineStore('line', {
this.selectedGraphics = null; this.selectedGraphics = null;
destroyLineApp(); destroyLineApp();
}, },
cancelSubscribe() {
const app = this.getLineApp();
cancelSubscribe(app);
},
setLineId(id: number | null) { setLineId(id: number | null) {
this.lineId = id; this.lineId = id;
}, },