From ddbf9886983e1f512a15ec2812a9448175210e6f Mon Sep 17 00:00:00 2001 From: aixianling Date: Thu, 16 Feb 2023 17:05:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/websocket/custom/getZip.js | 32 ++++++++++++++--------------- src/websocket/index.js | 37 +++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/websocket/custom/getZip.js b/src/websocket/custom/getZip.js index b3498ba..e70c57c 100644 --- a/src/websocket/custom/getZip.js +++ b/src/websocket/custom/getZip.js @@ -47,23 +47,23 @@ const handleZip = (id, ws) => { let path = `../${buildPath}`, {dist} = info dist = dist || `../zips/${info.name}v${info.version || "1.0.0"}` Promise.all([db.query(`update node_custom_config set download=null,error=null,zipTime='${dayjs().format("YYYY-MM-DD HH:mm:ss")}' where ${uniCon}`), execute(`./shell/update.sh ${info.name} ${path}`, signal)]) - .then(cmd => progress.set(30, cmd)) - .then(() => execute(`cd ${path}&&npm run apps&&node bin/pages.js ${id}&&npm run build`, signal)) - .then(cmd => progress.set(70, cmd)) - .then(() => fse.emptyDir(dist)) - .then(() => execute(`./shell/move.sh ${info.type} ${path} ${dist}`, signal)) - .then(cmd => progress.set(90, cmd)) - .then(() => db.query(`update node_custom_config set download='${dayjs().format("YYYY-MM-DD HH:mm:ss")}',error='' where ${uniCon}`)) + .then(cmd => progress.set(30, cmd)) + .then(() => execute(`cd ${path}&&npm run apps&&node bin/pages.js ${id}&&npm run build`, signal)) + .then(cmd => progress.set(70, cmd)) + .then(() => fse.emptyDir(dist)) + .then(() => execute(`./shell/move.sh ${info.type} ${path} ${dist}`, signal)) + .then(cmd => progress.set(90, cmd)) + .then(() => db.query(`update node_custom_config set download='${dayjs().format("YYYY-MM-DD HH:mm:ss")}',error='' where ${uniCon}`)) + .then(() => db.detail({table: "node_custom_config", id})) + .then(row => progress.finish(row)) + .catch(err => { + console.log(err) + const msg = `执行失败:${err.cmd}` + return db.query(`update node_custom_config set error='${msg}',zipTime=null where ${uniCon}`) .then(() => db.detail({table: "node_custom_config", id})) - .then(row => progress.finish(row)) - .catch(err => { - console.log(err) - const msg = `执行失败:${err.cmd}` - return db.query(`update node_custom_config set error='${msg}',zipTime=null where ${uniCon}`) - .then(() => db.detail({table: "node_custom_config", id})) - .then(row => progress.stop(row)) - .catch(() => 0) - }) + .then(row => progress.stop(row)) + .catch(() => 0) + }) } }).catch(err => { console.log(err) diff --git a/src/websocket/index.js b/src/websocket/index.js index b05e825..b4f89d0 100644 --- a/src/websocket/index.js +++ b/src/websocket/index.js @@ -1,29 +1,34 @@ const {findFile} = require("../utils/fsUtils"); const chalk = require("chalk"); const dayjs = require("dayjs"); +const {checkJson} = require("../tools"); const {log} = console module.exports = { - init: ins => new Promise(resolve => ins.ws('/ws', ws => { - log(`${chalk.bgBlue.black(" WEBSOCKET ")} 服务已启动!`) - ins.send('您已成功连接到node websocket') - let heartBeat = setInterval(() => wx.send(`heartBeat at ${dayjs().format("YYYY-MM-DD HH:mm:ss")}`), 5000) - ws.on('close', () => { - log(`${chalk.bgBlue.black(" WEBSOCKET ")} 连接已断开!`) - clearInterval(heartBeat) - }) + init: ins => new Promise(resolve => { let actions = {} findFile('./src/websocket', file => { if (!/index\.js/.test(file)) { - actions[ws.action] = ws.execute + const item = require(file.replace(/src[\\\/]websocket/, '.')) + actions[item.action] = item.execute } }).then(() => { - ws.on('message', res => { - if (res?.data) { - const data = JSON.parse(res.data) - !!data?.action && actions[res.action]?.(ws, data) - } + ins.ws('/ws', ws => { + log(`${chalk.bgBlue.black(" WEBSOCKET ")} 服务已启动!`) + ws.send('您已成功连接到node websocket') + ws.onerror = () => ws.close() + ws.on('close', () => { + log(`${chalk.bgRed.black(" WEBSOCKET ")} 连接已断开!`) + clearInterval(heartBeat) + }) + ws.on('message', res => { + if (checkJson(res)) { + const data = JSON.parse(res) + !!data?.action && actions[data.action]?.(ws, data) + } + }) + let heartBeat = setInterval(() => ws.send(`heartBeat at ${dayjs().format("YYYY-MM-DD HH:mm:ss")}`), 5000) + resolve() }) - resolve() }) - })) + }) }