UNPKG

1.96 kBJavaScriptView Raw
1/**
2 * @file 开发时web调试服务器启动功能
3 * @author otakustay[otakustay@live.com],
4 * errorrik[errorrik@gmail.com],
5 * ostream[ostream.song@gmail.com],
6 * firede[firede@firede.us]
7 * sekiyika[px.pengxing@gmail.com]
8 */
9var fs = require('fs');
10var path = require('path');
11var http = require('http');
12var https = require('https');
13
14var http2 = require('http2');
15var connect = require('connect');
16var edp = require('edp-core');
17
18/**
19 * 服务器配置
20 *
21 * @inner
22 */
23var serverConfig;
24
25/**
26 * 启动webserver
27 *
28 * @param {Object} config 启动所需配置模块
29 * @return {*} .
30 */
31module.exports = function (config) {
32 config = config || require('./config');
33 serverConfig = config;
34
35 var port = config.port || 80;
36 var protocol = config.protocol || 'http';
37 var documentRoot = config.documentRoot;
38 var injectResource = config.injectResource || config.injectRes;
39 injectResource && injectResource(require('./resource'));
40
41 var app = connect();
42
43 // 采用connect连接各个中间件
44 var defaults = require('./middleware/defaults');
45 defaults.attachTo(app, serverConfig);
46
47 var server;
48 if (protocol === 'https') {
49 server = https.createServer(
50 serverConfig.tlsOptions,
51 app
52 ).listen(port);
53 }
54 else if (protocol === 'http2') {
55 server = http2.createServer({
56 key: fs.readFileSync(path.join(__dirname, '/localhost.key')),
57 cert: fs.readFileSync(path.join(__dirname, '/localhost.crt'))
58 }, app).listen(port);
59 }
60 else {
61 server = http.createServer(app).listen(port);
62 }
63
64 var accessUrl = ((protocol === 'http') ? protocol : 'https')
65 + '://'
66 + require('./util/ip')
67 + (port === 80 ? '' : ':' + port);
68
69 edp.log.info('EDP WebServer start, %s', accessUrl);
70 edp.log.info('root = [%s], listen = [%s] ', documentRoot, port);
71
72 return server;
73};