Socket.IO w subdomenach z vhostem Express.js.
Mam dwa aplikacje Express.js uruchomione na moim serwerze.
Prosta aplikacja waniliowa o nazwie „main-app” i inna aplikacja Socket.IO o nazwie „socket-app”.
Mam „main-app” działający w „mydomain.com” i „socket-app” działający na poddomenie w „socket.mydomain.com”
Przekierowuję żądania do aplikacji-gniazda za pomocą wbudowanego oprogramowania pośredniczącego vhost Express.
- wewnątrz 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");
});
Działa to dobrze i widzę moją aplikację-gniazdo działającą na porcie 8080 w socket.mydomain
Wydaje się jednak, że istnieje problem z przekroczeniem limitu czasu i brakiem zdarzenia „uaktualnienia” podczas uruchamiania aplikacji Socket.IO za pośrednictwem vhosta, jak omówionotutaj.
Więc moje pytanie brzmi: jak mogę potraktować to wydarzenie „uaktualnienia” z mojej aplikacji głównej do mojej aplikacji-gniazdka, aby wszystkie podłączone gniazda mogły słyszeć, kiedy ktoś się łączy i rozłącza?
Próbowałem wysłać zdarzenie „upgrade” z poziomu „main-app”, ale wydaje się, że nie działa.
app.on('upgrade', function(req, socket) {
socket.emit('upgrade', app);
});
Czego mi tu brakuje?