UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

73 lines (72 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const http_1 = tslib_1.__importDefault(require("http")); const koa_1 = tslib_1.__importDefault(require("koa")); const spring4js_nodejs_1 = require("spring4js-nodejs"); const auth_1 = tslib_1.__importDefault(require("middleware/auth")); const koa_router_1 = tslib_1.__importDefault(require("koa-router")); const nunjucks_1 = tslib_1.__importDefault(require("nunjucks")); const koa_bodyparser_1 = tslib_1.__importDefault(require("koa-bodyparser")); const koa_static_1 = tslib_1.__importDefault(require("koa-static")); class Server { constructor({ container }) { this.container = container; } async start() { let configService = await this.container.getServiceInstance('configService'); let port = configService.getWebPort(); let app = new koa_1.default(); app.use(auth_1.default({ container: this.container })); app.use(koa_bodyparser_1.default()); const apiRouter = await this.assembleRouter(); app.use(apiRouter.routes()).use(apiRouter.allowedMethods()); let server = http_1.default.createServer(app.callback()); app.use(koa_static_1.default(path_1.default.resolve(__dirname, '../../../static'))); app.use(koa_static_1.default(path_1.default.resolve(__dirname, '../../../assets'))); nunjucks_1.default.configure(configService.getViewRoot(), {}); let connectionManager = new spring4js_nodejs_1.WsConnectionManager({ httpServer: server }); let rpcServer = new spring4js_nodejs_1.Server({ container: this.container, connectionManager, }); server.listen(port); console.log(`server addrress: http://127.0.0.1:${port}`); } async assembleRouter() { let logService = await this.container.getServiceInstance("logService"); let logger = logService.getWebLogger(); let router = new koa_router_1.default(); let routerList = this.container.getRouterInfo(); for (let routerInfo of routerList) { let { httpMethod, requestPath, serviceName, functionName } = routerInfo; logger.info(`注册路由 ${httpMethod} ${requestPath}`); let instance = await this.container.getServiceInstance(serviceName); router[httpMethod](requestPath, async (ctx) => { try { const ret = await instance[functionName](ctx); if (ret != undefined) { ctx.body = { code: 0, data: ret }; } } catch (err) { if (err) { logger.error(err); const { code = err.code || 500, msg = err.message || err.msg || err.error || JSON.stringify(err), data } = err; ctx.body = { code, msg, data, }; } } }); } return router; } } exports.default = Server;