Files
vic-server-mongo/src/server.js
2019-09-24 11:09:12 +08:00

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;
});