У меня следующая архитектура:
1) Tomcat-сервер работает на порте 8080
Когда вызывается URL-адрес, Tomcat предоставляет страницу входа и обрабатывает вход.
2) При успешном входе в систему Tomcat поставляет iframe с приложением NodeJs, которое работает на той же машине, но с портом 3000
.
теперь мне нужно сделать это достижимым с HTTPS, но у меня серьезная проблема с пониманием. Я уже получил ключ / сертификат и Tomcat доступен через modjk .. до тех пор, пока он не заработает нормально.
мое приложение nodejs выглядит так:
var http = require('http');
var https = require('https');
var fs = require('fs');
var app = require('./app');
var ws = require('ws');
var config = require('./config/config');
var cfg = config.getCfg('host');
var httpsOptions = {
key: fs.readFileSync('ssl/mycert.com.key'),
cert: fs.readFileSync('ssl/mycert.com.crt')
};
// if called with HTTP
if(req.connection.encrypted == 'undefined') {
var server = http.createServer(app.handleRequest).listen(cfg.nodePort, function () {
console.log('Server running on Port ' + cfg.nodePort);
});
// if called with HTTPS
} else {
var server = https.createServer(httpsOptions, app.handleRequest).listen(443, function () {
console.log('Server running on Port 443');
});
}
// WEBSOCKET
var wsServer = new ws.Server({server});
wsServer.on('connection', socket => {
// on message from client, call function
socket.on('message', message => {
console.log('WS from template <-- ', message);
var wsIn = JSON.parse(message);
eval(app[wsIn.action])(wsIn.param, socket);
});
});
это должно работать .. Я думаю .. Я не могу проверить это, потому что когда я делаю node server.js
, я получаю сообщение об ошибке, что порт 443. уже используется.
Ошибка: прослушайте EADDRINUSE: адрес уже используется ::: 443
теперь я действительно запутался :( .. как бы это сделать?