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