Socket IO в сочетании с сервером apache ssl

Я пытаюсь запустить сервер 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

1
задан 25 December 2015 в 14:12
1 ответ

Я наконец-то разобрался с этим.

На стороне сервера я запускаю следующий код в моем приложении 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, таким образом.

1
ответ дан 3 December 2019 в 23:54

Теги

Похожие вопросы