gaoshuaixing vor 3 Jahren
Ursprung
Commit
fcf2833b53

+ 0 - 9
app/controller/example.js

@@ -35,15 +35,6 @@ class ExampleController extends BaseController {
     this.sendSuccess(data);
   }
 
-  async executeJS() {
-    const self = this;
-    const { ctx, service } = this;
-    const body = ctx.request.body;
-    const str = body.str;
-    let data = await service.example.executeJS(str);
-    self.sendSuccess(data);
-  }
-
   /**
    * 上传文件
    */  

+ 1 - 4
app/router/example.js

@@ -5,10 +5,7 @@
  */
 module.exports = app => {
   const { router, controller } = app;
-  // open local dir
-  router.post('/api/example/openLocalDir', controller.example.openLocalDir);
-  // executeJS
-  router.post('/api/example/executeJS', controller.example.executeJS);
+
   // upload file
   router.post('/api/example/uploadFile', controller.example.uploadFile);
   // add test data

+ 0 - 5
app/service/example.js

@@ -12,11 +12,6 @@ class ExampleService extends Service {
     return null;
   }
 
-  async executeJS(str) {
-    let result = await socketClient.call('controller.example.executeJS', str);
-    return result;
-  }
-
   async uploadFileToSMMS(tmpFile) {
     const res = {
       code: 1000,

+ 46 - 4
electron/controller/example.js

@@ -4,6 +4,7 @@ const _ = require('lodash');
 const Controller = require('ee-core').Controller;
 const {app, dialog, webContents, shell, BrowserWindow, BrowserView, Notification, powerMonitor, screen, nativeTheme} = require('electron');
 
+let myTimer = null;
 /**
  * 示例控制器
  * @class
@@ -16,6 +17,13 @@ class ExampleController extends Controller {
    * @param event - IpcMainEvent 文档:https://www.electronjs.org/docs/latest/api/structures/ipc-main-event
    */
 
+   constructor(ctx) {
+    super(ctx);
+
+    //this.myTimer = null;
+
+   }
+
   /**
    * test
    */
@@ -35,14 +43,14 @@ class ExampleController extends Controller {
   /**
    * hello
    */
-  hello (args, event) {
+  hello (args) {
     let newMsg = args + " +1";
-    let reply = '';
-    reply = '收到:' + args + ',返回:' + newMsg;
+    let content = '';
+    content = '收到:' + args + ',返回:' + newMsg;
 
     // let channel = "example.socketMessageStop";
     // event.reply(`${channel}`, '另外的数据');
-    return reply;
+    return content;
   }
 
   /**
@@ -103,6 +111,40 @@ class ExampleController extends Controller {
     shell.openPath(dir);
     return true;
   }
+
+  /**
+   * 长消息 - 开始
+   */
+  socketMessageStart (args, event) {
+    // 每隔1秒,向前端页面发送消息
+    // 用定时器模拟
+    
+    // 前端ipc频道 channel
+    const channel = 'controller.example.socketMessageStart';
+    myTimer = setInterval(function(e, c, msg) {
+      let timeNow = Date.now();
+      let data = msg + ':' + timeNow;
+      e.reply(`${c}`, data)
+    }, 1000, event, channel, args)
+
+    return '开始了'
+  }
+
+  /**
+   * 长消息 - 停止
+   */
+  socketMessageStop () {
+    clearInterval(myTimer);
+    return '停止了'
+  }
+
+  /**
+   * 执行js
+   */
+  executeJS (args) {
+    let jscode = `(()=>{alert('${args}');return 'fromJs:${args}';})()`;
+    return webContents.fromId(1).executeJavaScript(jscode);
+  }
 }
 
 module.exports = ExampleController;

+ 4 - 1
frontend/src/api/main.js

@@ -2,7 +2,6 @@ import request from '@/utils/request'
 
 const eggApiroute = {
   uploadFile: '/api/example/uploadFile',
-  executeJS: '/api/example/executeJS',
   autoLaunchEnable: '/api/example/autoLaunchEnable',
   autoLaunchDisable: '/api/example/autoLaunchDisable',
   autoLaunchIsEnabled: '/api/example/autoLaunchIsEnabled',
@@ -18,6 +17,10 @@ const ipcApiRoute = {
   messageShowConfirm: 'controller.example.messageShowConfirm',
   selectFolder: 'controller.example.selectFolder',
   openDirectory: 'controller.example.openDirectory',
+  socketMessageStart: 'controller.example.socketMessageStart',
+  socketMessageStop: 'controller.example.socketMessageStop',
+  hello: 'controller.example.hello',
+  executeJS: 'controller.example.executeJS',
 }
 
 /**

+ 9 - 13
frontend/src/views/base/socket/Index.vue

@@ -43,7 +43,7 @@
   </div>
 </template>
 <script>
-import { requestEggApi } from '@/api/main'
+import { requestEggApi, ipcApiRoute } from '@/api/main'
 export default {
   data() {
     return {
@@ -59,35 +59,31 @@ export default {
   methods: {
     init () {
       const self = this;
-      self.$ipc.on('example.socketMessageStart', (event, result) => {
+      self.$ipc.on(ipcApiRoute.socketMessageStart, (event, result) => {
         console.log('[ipcRenderer] [socketMsgStart] result:', result)
         self.socketMessageString = result;
       })
-      self.$ipc.on('example.socketMessageStop', (event, result) => {
+      self.$ipc.on(ipcApiRoute.socketMessageStop, (event, result) => {
         console.log('[ipcRenderer] [socketMsgStop] result:', result)
         self.socketMessageString = result;
       })
     },
     helloHandle(value) {
       const self = this;
-      this.$ipcCallMain('controller.example.hello', value).then(r => {
+      this.$ipcCallMain(ipcApiRoute.hello, value).then(r => {
         self.$message.info(r);
       })
     },
     executeJSHandle(value) {
-      requestEggApi('executeJS', {str: value}).then(res => {
-        if (res.code == 0) {
-          console.log(res.data);
-        }
-      }).catch(err => {
-        console.log('err:', err)
-      })
+      this.$ipcCallMain(ipcApiRoute.executeJS, value).then(r => {
+        console.log(r);
+      })      
     },
     socketMsgStart() {
-      this.$ipc.send('example.socketMessageStart', '时间')
+      this.$ipc.send(ipcApiRoute.socketMessageStart, '时间')
     },
     socketMsgStop() {
-      this.$ipc.send('example.socketMessageStop', '')
+      this.$ipc.send(ipcApiRoute.socketMessageStop, '')
     },
   }
 }