diff --git a/app/message/io/test.js b/app/message/io/test.js new file mode 100644 index 0000000..09c1740 --- /dev/null +++ b/app/message/io/test.js @@ -0,0 +1,3 @@ +module.exports = (eventName, callback)=>{ + console.log('123321',eventName, callback); +} diff --git a/extend/event/index.js b/extend/event/index.js index d13363f..cc138e8 100644 --- a/extend/event/index.js +++ b/extend/event/index.js @@ -6,8 +6,8 @@ const config = require("./config") const EventEmitter = require('events'); module.exports = async (app) => { app.event = new EventEmitter() - const evList = await app.load(config.path) - evList.forEach(item => { + const list = await app.load(config.path) + list.forEach(item => { Object.keys(item.res).forEach(key => { //载入所有事件 app.event.on(key, item.res[key]) diff --git a/extend/middleware/config.js b/extend/middleware/config.js new file mode 100644 index 0000000..cb886ac --- /dev/null +++ b/extend/middleware/config.js @@ -0,0 +1,3 @@ +module.exports = { + path:"middleware/*.js" +} diff --git a/extend/middleware/index.js b/extend/middleware/index.js new file mode 100644 index 0000000..2404f80 --- /dev/null +++ b/extend/middleware/index.js @@ -0,0 +1,15 @@ +/** + * 加载中间件 + * 加载app/middleware文件夹下的中间件 + */ +const config = require("./config") +module.exports = async (app) => { + let list = await app.load(config.path) + list = app.xe.orderBy(list, "res.sort") + list = list.filter(item => item.res.use) + list.forEach(item => { + app.use(async (ctx, next) => { + return await item.res.fun(ctx, next) + }) + }) +} diff --git a/extend/socket.io/config.js b/extend/socket.io/config.js new file mode 100644 index 0000000..ed67080 --- /dev/null +++ b/extend/socket.io/config.js @@ -0,0 +1,3 @@ +module.exports = { + path:"app/*/io/*.js", +} diff --git a/extend/socket.io/index.js b/extend/socket.io/index.js new file mode 100644 index 0000000..a16ce21 --- /dev/null +++ b/extend/socket.io/index.js @@ -0,0 +1,42 @@ +/** + * socket.io + * 自动绑定io文件夹内js文件 + * 参考文档: + * 1.https://socket.io/docs/v4/server-api + * 2.https://juejin.cn/post/6844903810050031630 + */ +const config = require("./config") +const path = require('path') +module.exports = async (app) => { + const server = require('http').createServer(app.callback()); + const io = require('socket.io')(server); + let list = await app.load(config.path) + app.io = io + //默认命名空间 + io.on('connection', socket => { + socket.emit('open', "连接成功!");//通知客户端已连接 + console.log('通知客户端已连接'); + //监听disconnect事件 + socket.on('disconnect', (eventName, callback) => { + console.log('断开') + }) + for (let el of list) { + //空间名称 + // const namespace = path.basename(path.resolve(el.parse.dir, '..')) + //事件名称 + const onname = el.parse.name + socket.on(onname, el.res) + } + }); + + + + //覆盖启动方法 + app.startServer = () => { + // 监听端口 + app.startServer = server.listen(3000, () => { + console.log('listening on *:3000'); + }); + } + +} diff --git a/lib/bamboo/index.js b/lib/bamboo/index.js index 110992a..5725639 100644 --- a/lib/bamboo/index.js +++ b/lib/bamboo/index.js @@ -1,6 +1,7 @@ const Koa = require("koa") const glob = require("glob") const path = require('path') +const xe = require("xe-utils") /** * bamboo 核心 @@ -10,12 +11,12 @@ module.exports = class Bamboo extends Koa { /*初始化业务目录*/ constructor(extend_directory, root) { super(); + this.xe = xe this.root = this.isPath() || root; this.extend_directory = extend_directory || `extend/*/index.js` console.log(`当前根目录${this.root}`); console.log(`当前插件目录${this.extend_directory}`); this.loadEvent() - this.startServer() } /*加载扩展库目录*/ @@ -24,6 +25,7 @@ module.exports = class Bamboo extends Koa { for (let listElement of list) { await listElement.res(this) } + this.startServer() } /*当前根目录*/ @@ -55,8 +57,11 @@ module.exports = class Bamboo extends Koa { }) } + + /*启动服务*/ startServer(prod) { this.listen(prod || 3000) + console.log('启动服务:3000'); } } diff --git a/lib/bamboo/package.json b/lib/bamboo/package.json index 5de819c..80694f3 100644 --- a/lib/bamboo/package.json +++ b/lib/bamboo/package.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "glob": "^8.0.3", - "koa": "^2.13.4" + "koa": "^2.13.4", + "xe-utils": "^3.5.4" } } diff --git a/package.json b/package.json index 3b5f0e1..74799ac 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "require-directory": "^2.1.1", "sequelize": "^6.18.0", "shelljs": "^0.8.5", + "socket.io": "^4.5.1", "sqlite3": "^5.0.2", "webpack": "^4.41.5", "webpack-cli": "3.3.10",