gaoshuaixing 5 vuotta sitten
vanhempi
commit
010a63b5d1
5 muutettua tiedostoa jossa 79 lisäystä ja 10 poistoa
  1. 32 8
      app/service/base.js
  2. 30 0
      app/service/socket.js
  3. 15 0
      electron/api.js
  4. 0 1
      electron/lib/AutoLaunch.js
  5. 2 1
      package.json

+ 32 - 8
app/service/base.js

@@ -1,9 +1,9 @@
 'use strict';
 
-const request = require('superagent');
 const Service = require('egg').Service;
 
 class BaseService extends Service {
+
   /*
    * ipc call
    */
@@ -17,14 +17,8 @@ class BaseService extends Service {
       return result;
     }
 
-    const port = this.service.storage.getElectronIPCPort();
-    const url  = 'localhost:' + port + '/send';
     try {
-      const response = await request.post(url)
-        .send({ cmd: method, params: params })
-        .set('accept', 'json');
-        
-        result = JSON.parse(response.text);  
+      result = await this.service.socket.call(method, params);
     } catch (err) {
       this.app.logger.error('[base] [ipcCall] request error:', err);
       result.err = 'request err';
@@ -33,6 +27,36 @@ class BaseService extends Service {
 
     return result;
   }
+
+  /*
+   * ipc call
+   */
+  // async ipcCall(method = '', ...params) {
+  //   let result = {
+  //     err: null,
+  //     data: null
+  //   };
+  //   if (!method) {
+  //     result.err = 'Method does not exist';
+  //     return result;
+  //   }
+
+  //   const port = this.service.storage.getElectronIPCPort();
+  //   const url  = 'http://localhost:' + port + '/send';
+  //   try {
+  //     const response = await request.post(url)
+  //       .send({ cmd: method, params: params })
+  //       .set('accept', 'json');
+        
+  //       result = JSON.parse(response.text);  
+  //   } catch (err) {
+  //     this.app.logger.error('[base] [ipcCall] request error:', err);
+  //     result.err = 'request err';
+  //   }
+  //   this.app.logger.info('[base] [ipcCall] result:', result);
+
+  //   return result;
+  // }
 }
 
 module.exports = BaseService;

+ 30 - 0
app/service/socket.js

@@ -0,0 +1,30 @@
+'use strict';
+
+const BaseService = require('./base');
+const io = require('socket.io-client');
+
+this.instance = null;
+
+class SocketService extends BaseService {
+
+  instance() {
+    if (!SocketService.instance) {
+      const port = this.service.storage.getElectronIPCPort();
+      const url  = 'http://localhost:' + port;
+      const instance = io(url);
+      SocketService.instance = instance;
+    }
+    return SocketService.instance;
+  }
+
+  call (method = '', params) {
+    return new Promise((resolve, reject) => {
+      this.instance().emit('ipc', { cmd: method, params: params }, (response) => {
+        resolve(response);
+      });
+    });
+  }
+
+}
+
+module.exports = SocketService;

+ 15 - 0
electron/api.js

@@ -4,6 +4,7 @@ const http = require('http');
 const path = require('path');
 const _ = require('lodash');
 const storage = require('./storage');
+const socketIo = require('socket.io');
 
 const apis = {};
 
@@ -57,6 +58,20 @@ exports.setup = async function () {
     }
   });
 
+  // socket io
+  const io = socketIo(server);
+  io.on('connection', (socket) => {
+    socket.on('ipc', (message, callback) => {
+      ELog.info('[ api ] [setup] socket id:' + socket.id + ' message cmd: ' + message.cmd);
+      const data = apis[message.cmd](...message.params);
+      const result = {
+        err: null,
+        data: data,
+      };
+      callback(result);
+    });
+  });
+
   server.listen(port, listen, function() {
     ELog.info('[ api ] [setup] server is listening on', `${listen}:${port}`);
   });  

+ 0 - 1
electron/lib/AutoLaunch.js

@@ -21,7 +21,6 @@ class AutoLaunch {
 
   isEnabled () {
     const enabled = app.getLoginItemSettings(LOGIN_SETTING_OPTIONS).openAtLogin;
-    console.log('AutoLaunch isEnabled:', enabled);
     return enabled;
   }
 }

+ 2 - 1
package.json

@@ -115,6 +115,7 @@
     "lodash": "^4.17.11",
     "lowdb": "^1.0.0",
     "semver": "^5.4.1",
-    "superagent": "^6.1.0"
+    "socket.io": "^3.0.5",
+    "socket.io-client": "^3.0.5"
   }
 }