Я пытаюсь запустить сервер NodeJS на порту 8000 вместе с моим сервером Apache с сертификатом ssl. Я использую виртуальные хосты и proxypass для ссылки с моего веб-сайта apache через путь / node на мой сервер NodeJS.
Проблема, с которой я прав, заключается в том, что я могу загружать страницы, обслуживаемые плагином Express, но опрос из соединений SocketIO, похоже, не работает. Я пробовал кучу вещей, но у меня просто не получается заставить их работать.
Если я настрою своего клиента слушать
var socket = io.connect('example.com:8000', {secure: false});
Моя консоль показывает что-то вроде этого:
socket.io-1.3.7.js:2 GET https://example.com:8000/socket.io/?EIO=3&transport=polling&t=1451044647116-0 net::ERR_CONNECTION_CLOSED
Кроме того, я знаю, как использовать SSL с моим сервером NodeJS, но предполагаю, что это не сработает, поскольку я также прослушиваю порт 443 с моим сервером apache.
Кто-нибудь знает, возможно ли это вообще и / или как это настроить?
РЕДАКТИРОВАТЬ: Забыл упомянуть, что я работаю на Ubuntu 14.04 x64
Я наконец понял это.
На стороне сервера я запускаю следующий код в своем приложении nodeJS:
var options = {
key: fs.readFileSync('/home/certificates.key'),
cert: fs.readFileSync('/home/certificates.crt'),
requestCert: true
};
var server = require('https').createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(8000);
console.log('Server started at port: 8000');
На стороне клиента я обслуживаю страницу, используя свой сервер Apache, который просто использует следующее для установления соединения.
var socket = io.connect('example.com:8000', {secure: true});
Я никогда не думал, что таким образом можно запустить ssl через порт вроде 8000.