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() }) - })) + }) }