youzanyun-devtool-worker
Version:
- web - ws - proxy
73 lines (72 loc) • 3.31 kB
JavaScript
;
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;