Socket.IO auf Subdomains mit Express.js vhost
Ich habe zwei Express.js-Apps auf meinem Server.
Eine einfache Vanille-App mit dem Namen "main-app" und eine andere, die Socket.IO mit dem Namen "socket-app" verwendet.
Ich habe "main-app" auf "mydomain.com" und "socket-app" auf einer Subdomain auf "socket.mydomain.com"
Ich leite Anfragen über die in Express integrierte vhost-Middleware an die Socket-App weiter.
- in 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");
});
Dies funktioniert einwandfrei und ich kann sehen, dass meine Socket-App auf Port 8080 unter socket.mydomain ausgeführt wird
Es scheint jedoch ein Problem mit dem Timeout von Websockets zu geben, bei dem das "Upgrade" -Ereignis nicht empfangen wird, wenn eine Socket.IO-App wie beschrieben über vhost ausgeführt wirdHier.
Meine Frage ist also, wie ich dieses "Upgrade" -Ereignis von meiner Haupt-App zu meiner Socket-App leiten kann, damit alle verbundenen Sockets hören können, wenn sich jemand verbindet oder trennt.
Ich habe versucht, das "Upgrade" -Ereignis über "main-app" auszulösen, aber es scheint nicht zu funktionieren.
app.on('upgrade', function(req, socket) {
socket.emit('upgrade', app);
});
Was vermisse ich hier?