Soquete IO combinado com o servidor ssl do apache

1

Estou tentando executar um servidor NodeJS na porta 8000 junto com meu servidor Apache, que possui um certificado ssl. Estou usando hosts virtuais e proxypass para vincular meu site apache através do caminho / node ao meu servidor NodeJS.

O problema que estou tendo certo é que eu sou capaz de carregar as páginas servidas com o plugin Express, mas a sondagem das conexões SocketIO parece falhar. Eu tentei um monte de coisas, mas eu simplesmente não consigo fazê-lo funcionar.

Se eu configurar meu cliente para ouvir

var socket = io.connect('example.com:8000', {secure: false});

Meu console mostra algo nos seguintes termos:

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

Além disso, eu sei como usar o SSL com o meu servidor NodeJS, mas eu suponho que não vai funcionar, já que também estou ouvindo através da porta 443 com o meu servidor apache.

Alguém sabe se isso é possível e / ou como configurá-lo?

EDIT: Esqueci de mencionar que estou rodando no Ubuntu 14.04 x64

    
por Crecket 25.12.2015 / 12:59

1 resposta

0

Eu finalmente descobri isso.

Lado do servidor Eu corro o seguinte código no meu aplicativo 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');

Lado do cliente Eu sirvo uma página usando o meu servidor Apache, que simplesmente usa o seguinte para estabelecer a conexão.

var socket = io.connect('example.com:8000', {secure: true});

Eu nunca percebi que você poderia rodar ssl em uma porta como a 8000 dessa maneira.

    
por 25.12.2015 / 23:42