Gaokun Wang 5 giorni fa
parent
commit
812ed455fa
7 ha cambiato i file con 34 aggiunte e 29 eliminazioni
  1. 1 8
      electron.vite.config.ts
  2. 9 2
      electron/main/index.ts
  3. 1 2
      index.html
  4. 2 2
      src/layouts/index.vue
  5. 2 2
      src/main.ts
  6. 6 0
      src/utils/webSocket.ts
  7. 13 13
      src/views/test/index.vue

+ 1 - 8
electron.vite.config.ts

@@ -28,14 +28,7 @@ export default defineConfig({
   },
   renderer: {
     server: {
-      cors: true,
-      proxy: {
-        '/websocket': {
-          target: 'ws://127.0.0.1:8899/',
-          changeOrigin: true,
-          ws: true
-        }
-      }
+      cors: true
     },
     root: '.',
     build: {

+ 9 - 2
electron/main/index.ts

@@ -6,8 +6,6 @@ import icon from '../../resources/icon.png?asset'
 function createWindow(): void {
   // Create the browser window.
   const mainWindow = new BrowserWindow({
-    // width: 900,
-    // height: 670,
     maximizable: true,
     show: false,
     autoHideMenuBar: true,
@@ -18,6 +16,15 @@ function createWindow(): void {
     }
   })
 
+  // 或者在加载前设置 CSP
+  mainWindow.webContents.on('did-finish-load', () => {
+    mainWindow.webContents.insertCSS(`
+    meta[http-equiv="Content-Security-Policy"] {
+      content: "default-src 'self'; connect-src 'self' ws://127.0.0.1:8899";
+    }
+  `)
+  })
+
   mainWindow.on('ready-to-show', () => {
     // 最大化
     mainWindow.maximize()

+ 1 - 2
index.html

@@ -3,10 +3,9 @@
   <head>
     <meta charset="UTF-8" />
     <title>测试性用例软件</title>
-    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
     <meta
       http-equiv="Content-Security-Policy"
-      content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:"
+      content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' ws://127.0.0.1:8899;"
     />
   </head>
 

+ 2 - 2
src/layouts/index.vue

@@ -38,8 +38,8 @@ const reload = () => {
   location.reload()
 }
 const relink = () => {
-  let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'
-  initWebSocket(protocol + window.location.host + '/websocket')
+  const wsUrl = 'ws://127.0.0.1:8899/websocket'
+  initWebSocket(wsUrl)
 }
 const path = computed(() => {
   return router.currentRoute.value.path

+ 2 - 2
src/main.ts

@@ -25,8 +25,8 @@ const setupAll = async () => {
   setupRouter(app)
   app.use(ContextMenu)
   app.use(pinia)
-  let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'
-  initWebSocket(protocol + window.location.host + '/websocket')
+  const wsUrl = 'ws://127.0.0.1:8899/websocket'
+  initWebSocket(wsUrl)
   app.mount('#app')
 }
 

+ 6 - 0
src/utils/webSocket.ts

@@ -88,6 +88,12 @@ export const initWebSocket = (url: string) => {
 
   // 监听状态变化
   watch(status, newStatus => {
+    if (newStatus == 'OPEN') {
+      useWebSocketManager().sendMessage({
+        serverName: 'wsClient',
+        type: 'fetch'
+      })
+    }
     console.log(`WebSocket 状态变化: ${newStatus}`)
   })
 

+ 13 - 13
src/views/test/index.vue

@@ -81,19 +81,19 @@ import { ElMessageBox } from 'element-plus'
 const { sendMessage } = useWebSocketManager()
 const useStoreCaseFlowData = useCaseFlowData()
 // 组件加载完成后发送初始消息
-onMounted(() => {
-  console.log('组件已加载,发送初始消息')
-  nextTick(() => {
-    if (wsClient.value && wsStatus.value === '已连接') {
-      sendMessage({
-        serverName: 'wsClient',
-        type: 'fetch'
-      })
-    } else {
-      console.log('WebSocket 未连接,无法发送初始消息')
-    }
-  })
-})
+// onMounted(() => {
+//   console.log('组件已加载,发送初始消息')
+//   nextTick(() => {
+//     if (wsClient.value && wsStatus.value === '已连接') {
+//       sendMessage({
+//         serverName: 'wsClient',
+//         type: 'fetch'
+//       })
+//     } else {
+//       console.log('WebSocket 未连接,无法发送初始消息')
+//     }
+//   })
+// })
 
 const caseList = computed(() => {
   return useStoreCaseFlowData.getCaseList