57 lines
2.6 KiB
JavaScript
57 lines
2.6 KiB
JavaScript
'use strict';
|
|
/**
|
|
1.导入express组件app
|
|
2.创建数据库连接
|
|
3.注册路由
|
|
4.启动node服务
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const app = require('./app.js');
|
|
const Socket = require('socket.io');
|
|
const inject = require('./common/Provider').inject;
|
|
// const cluster = require('cluster')
|
|
|
|
module.exports = () => inject(function runServer (SysConfig) { // 配置并启动 Web 服务
|
|
mylog.info('★★★★★★★★ Starting Server ★★★★★★★★');
|
|
|
|
/** * 启动 Web 服务 ***/
|
|
let webServer;
|
|
SysConfig.port = parseInt(SysConfig.port) || (SysConfig.protocol === 'http' ? 80 : SysConfig.protocol === 'https' ? 443 : undefined) // 端口默认为 http:80, https:443, httpall: 80|443
|
|
if (SysConfig.protocol === 'http') {
|
|
webServer = require('http').createServer(app).listen(SysConfig.port, function (err) {
|
|
if (err) mylog.info(err);
|
|
else mylog.info(`Server listening on ${SysConfig.protocol}://${SysConfig.host}:${SysConfig.port} with for ${app.settings.env} environment`);
|
|
});
|
|
} else if (SysConfig.protocol === 'https') {
|
|
webServer = require('https').createServer({
|
|
key: fs.readFileSync(SysConfig.sslKey),
|
|
cert: fs.readFileSync(SysConfig.sslCert),
|
|
}, app).listen(SysConfig.port, function (err) {
|
|
if (err) mylog.error(err);
|
|
else console.log(`Server listening on ${SysConfig.protocol}://${SysConfig.host}:${SysConfig.port} for ${app.settings.env} environment`);
|
|
});
|
|
} else if ('httpall' === SysConfig.protocol) {
|
|
let portHttp = SysConfig.port ? SysConfig.port : 80;
|
|
let portHttps = (SysConfig.port && SysConfig.port !== 80) ? SysConfig.port + 443 : 443
|
|
require('http').createServer(server.all('*', function (ask, reply) {
|
|
reply.redirect(`https://${SysConfig.host}:${portHttps}`)
|
|
})).listen(portHttp, function(err) {
|
|
if (err) console.log(err)
|
|
else console.log(`Server listening on [${SysConfig.protocol}] http://${SysConfig.host}:${portHttp} for ${app.settings.env} environment`)
|
|
})
|
|
webServer = require('https').createServer({
|
|
key: fs.readFileSync(SysConfig.sslKey),
|
|
cert: fs.readFileSync(SysConfig.sslCert),
|
|
// ca: [ fs.readFileSync(SysConfig.sslCA) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
|
|
}, app).listen(portHttps, function (err) {
|
|
if (err) console.log(err);
|
|
else console.log(`Server listening on [${SysConfig.protocol}] https://${SysConfig.host}:${portHttps} for ${app.settings.env} environment`);
|
|
});
|
|
}
|
|
|
|
// const socket = Socket(webServer);
|
|
return webServer;
|
|
});
|