-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
86 lines (73 loc) · 2.37 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
const Logger = require("./utils/logger");
const uuid = require('node-uuid');
const fs = require('fs');
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const controller = require('./middleware/controller');
const UserAuth = require('./middleware/userauth');
const compress = require('koa-compress');
const rest = require('./middleware/rest');
const app = new Koa();
const session = require("koa-session2");
const Config = require('./config');
const Cors = require('koa-cors');
const serve = require("koa-static");
const https = require('https');
let testappid = require('./utils/common').testappid;
const params = process.argv.splice(2);
Logger.debug('params input:',process.argv);
if(!params||params.length !== 1){
Logger.error('param invalid, please input one param as the port.');
return process.exit(1);
}
console.log(`process.env.NODE_ENV = [${process.env.NODE_ENV}]`);
const isProduction = process.env.NODE_ENV === 'production';
console.log(`isProduction = [${isProduction}]`);
app.use(Cors());
// log request URL:
app.use(async (ctx, next) => {
console.log = Logger.info.bind(Logger);
ctx.logger = Logger;
//Logger.debug('req in: head:',ctx.req.headers);
Logger.info(`Process ${ctx.request.method} ${ctx.request.url}...`);
let
start = new Date().getTime(),
execTime;
await next();
console.log("ctx.response.status=" + ctx.response.status);
if (ctx.response.status == 404) {
ctx.rest({status:0,message:'unknow path'});
}
execTime = new Date().getTime() - start;
ctx.response.set('X-Response-Time', `${execTime}ms`);
Logger.debug(`${ctx.request.method} ${ctx.request.url} spend %s ms:`,execTime);
});
app.use(compress({
//filter: function (content_type) {
// return /text/i.test(content_type)
//},
threshold: 2048,
flush: require('zlib').Z_SYNC_FLUSH
}));
app.use(session({
key: "SESSIONID", //default "koa:sess"
maxAge: 30 * 60 * 1000
}));
// bind .rest() for ctx:
app.use(rest.restify());
//如果是产品阶段要校验appid
if(isProduction){
app.use(testappid);
}
// static file support:
//if (! isProduction) {
app.use(serve(__dirname + '/public'));
//}
// parse request body:
app.use(bodyParser());
//登陆认证
app.use(UserAuth.auth);
// add controller:
app.use(controller());
app.listen( params[0]);
console.log('app started at port ', params[0]);