From a97ecfc0baacdd496c3b5d4699a8a7902d409ee5 Mon Sep 17 00:00:00 2001 From: gaoshuaixing Date: Wed, 23 Dec 2020 19:28:50 +0800 Subject: [PATCH] ipc call & example --- app/controller/v1/example.js | 2 +- app/service/base.js | 19 +++++++++++++------ app/service/example.js | 2 +- app/service/storage.js | 2 +- electron/api.js | 13 ++++++------- electron/apis/example.js | 22 ++++++++++++++++------ 6 files changed, 38 insertions(+), 22 deletions(-) diff --git a/app/controller/v1/example.js b/app/controller/v1/example.js index 3cf7528..25f2ead 100644 --- a/app/controller/v1/example.js +++ b/app/controller/v1/example.js @@ -6,7 +6,7 @@ class ExampleController extends BaseController { async openLocalDir() { const self = this; - const { ctx } = this; + const { service } = this; const data = { title: 'example test' diff --git a/app/service/base.js b/app/service/base.js index 24f9249..a583091 100644 --- a/app/service/base.js +++ b/app/service/base.js @@ -11,18 +11,25 @@ class BaseService extends Service { if (!method) { return 'Method does not exist'; } - const res = {}; + let result = { + code: 0, + data: null + }; const port = this.service.storage.getElectronIPCPort(); const url = 'localhost:' + port + '/send'; + try { - res = await request.post(url) - .send({ cmd: method, data: data }); - console.log(res); + const response = await request.post(url) + .send({ cmd: method, data: data }) + .set('accept', 'json'); + + result = JSON.parse(response.text); } catch (err) { - console.error(err); + ELog.error('[base] [ipcCall] request error:', err); + result.code = -10; } - return res; + return result; } } diff --git a/app/service/example.js b/app/service/example.js index e58c470..1396bfb 100644 --- a/app/service/example.js +++ b/app/service/example.js @@ -6,7 +6,7 @@ class ExampleService extends BaseService { async openLocalDir() { const self = this; - await self.ipcCall('example.getPath'); + await self.ipcCall('example.openDir'); return true; } diff --git a/app/service/storage.js b/app/service/storage.js index 10d27e4..c9926d9 100644 --- a/app/service/storage.js +++ b/app/service/storage.js @@ -33,7 +33,7 @@ class StorageService extends BaseService { * getElectronIPCPort */ getElectronIPCPort() { - const key = storageKey.ELECTRON_IPC + 'port'; + const key = storageKey.ELECTRON_IPC + '.port'; const port = this.instance() .get(key) .value(); diff --git a/electron/api.js b/electron/api.js index 09bcd42..14bea89 100644 --- a/electron/api.js +++ b/electron/api.js @@ -8,17 +8,16 @@ const storage = require('./storage'); const apis = {}; exports.setup = async function () { - ELog.info('[api] [setup]'); setApi(); // use api server let port = await storage.setIpcDynamicPort(); - console.log('api port:', port); + ELog.info('[api] [setup] dynamic port:', port); const listen = 'localhost'; port = port ? port : 7069; const server = http.createServer(function(req, res) { - ELog.info('[ api ] command received', { method: req.method, url: req.url }); + ELog.info('[ api ] [setup] command received', { method: req.method, url: req.url }); if ((req.method === 'POST' && req.url === '/send')) { let body = ''; req.setEncoding('utf8'); @@ -35,7 +34,7 @@ exports.setup = async function () { return res.end('request body parse failure.'); } if (!apis[message.cmd]) { - ELog.info('[ api ] invalid command called:', message.cmd); + ELog.info('[ api ] [setup] invalid command called:', message.cmd); res.statusCode = 404; return res.end('NG'); } @@ -43,11 +42,11 @@ exports.setup = async function () { const start = Date.now(); const data = apis[message.cmd](); const elapsed = Date.now() - start; - ELog.info(`api [${message.cmd}] success. elapsed: ${elapsed}ms`, data); + ELog.info(`[api] [setup] [${message.cmd}] success. elapsed: ${elapsed}ms`, data); res.statusCode = 200; const result = { code: 0, - data, + data: data, }; res.end(JSON.stringify(result)); }); @@ -58,7 +57,7 @@ exports.setup = async function () { }); server.listen(port, listen, function() { - ELog.info('[ api ] server is listening on', `${listen}:${port}`); + ELog.info('[ api ] [setup] server is listening on', `${listen}:${port}`); }); }; diff --git a/electron/apis/example.js b/electron/apis/example.js index 617536d..acc5f10 100644 --- a/electron/apis/example.js +++ b/electron/apis/example.js @@ -1,6 +1,7 @@ 'use strict'; -const {app} = require('electron'); +const path = require('path'); +const { app, shell } = require('electron'); exports.getPath = function () { const dir = app.getAppPath(); @@ -9,11 +10,20 @@ exports.getPath = function () { return dir; } -exports.openDir = function () { - const dir = app.getAppPath(); - ELog.info('dir:', dir); +exports.openDir = function (dir = 'D:/www/xing/electron-egg') { + if (!dir) { + return false; + } + dir = getElectronPath(dir); + shell.openItem(dir); - return dir; + return true; } -exports = module.exports; \ No newline at end of file +function getElectronPath (filepath) { + filepath = path.resolve(filepath); + filepath=filepath.replace("resources",""); + filepath=filepath.replace("app.asar",""); + filepath = path.normalize(filepath); + return filepath; +}; \ No newline at end of file