Я пытаюсь запустить сервер 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, таким образом.