Socket.IO em subdomínios com o Express.js vhost
Eu tenho dois aplicativos Express.js em execução no meu servidor.
Um aplicativo simples chamado "main-app" e outro que usa Socket.IO chamado "socket-app".
Eu tenho "main-app" rodando em "mydomain.com" e "socket-app" rodando em um subdomínio em "socket.mydomain.com"
Estou encaminhando solicitações para o aplicativo de soquete através do middleware vhost embutido do Express.
- dentro do main-app.js -
var express = require('express');
var app = module.exports = express.createServer();
app.use(express.vhost('socket.mydomain', require('./socket-app/app.js')));
app.listen(8080, function(){
console.log("Express server listening on port %d in %s mode");
});
Isso funciona bem e posso ver meu aplicativo de soquete sendo executado na porta 8080 no socket.mydomain
No entanto, parece haver um problema com o tempo limite de websockets e o recebimento do evento "upgrade" ao executar um aplicativo Socket.IO por meio do vhost, conforme discutido anteriormente.Aqui.
Então, minha pergunta é: como canalizar esse evento "upgrade" do meu aplicativo principal para o meu aplicativo de soquete para que todos os soquetes conectados possam ouvir quando alguém se conecta e desconecta?
Eu tentei emitir o evento "upgrade" de dentro de "main-app", mas não parece estar funcionando.
app.on('upgrade', function(req, socket) {
socket.emit('upgrade', app);
});
O que estou perdendo aqui?