From fcf2833b5390423463473668986fcaf3f811858c Mon Sep 17 00:00:00 2001 From: gaoshuaixing Date: Mon, 21 Feb 2022 16:46:28 +0800 Subject: [PATCH] socket --- app/controller/example.js | 9 ----- app/router/example.js | 5 +-- app/service/example.js | 5 --- electron/controller/example.js | 50 ++++++++++++++++++++++-- frontend/src/api/main.js | 5 ++- frontend/src/views/base/socket/Index.vue | 22 +++++------ 6 files changed, 60 insertions(+), 36 deletions(-) diff --git a/app/controller/example.js b/app/controller/example.js index 2991e13..8a61d53 100644 --- a/app/controller/example.js +++ b/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); - } - /** * 上传文件 */ diff --git a/app/router/example.js b/app/router/example.js index 964c633..4daddde 100644 --- a/app/router/example.js +++ b/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 diff --git a/app/service/example.js b/app/service/example.js index eaf3828..c37398e 100644 --- a/app/service/example.js +++ b/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, diff --git a/electron/controller/example.js b/electron/controller/example.js index b1869ff..9bf602b 100644 --- a/electron/controller/example.js +++ b/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; diff --git a/frontend/src/api/main.js b/frontend/src/api/main.js index 8a37f87..7d33958 100644 --- a/frontend/src/api/main.js +++ b/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', } /** diff --git a/frontend/src/views/base/socket/Index.vue b/frontend/src/views/base/socket/Index.vue index a3ac352..fc4926f 100644 --- a/frontend/src/views/base/socket/Index.vue +++ b/frontend/src/views/base/socket/Index.vue @@ -43,7 +43,7 @@