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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage