mirror of
https://gitee.com/dromara/electron-egg.git
synced 2026-06-10 03:07:32 +08:00
socket io
This commit is contained in:
@@ -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
app/service/socket.js
Normal file
30
app/service/socket.js
Normal file
@@ -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;
|
||||
@@ -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}`);
|
||||
});
|
||||
|
||||
@@ -21,7 +21,6 @@ class AutoLaunch {
|
||||
|
||||
isEnabled () {
|
||||
const enabled = app.getLoginItemSettings(LOGIN_SETTING_OPTIONS).openAtLogin;
|
||||
console.log('AutoLaunch isEnabled:', enabled);
|
||||
return enabled;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user