我的服务器上运行着两个 Express.js 应用程序。
一个普通的应用程序称为“main-app”,另一个使用 Socket.IO 的应用程序称为“socket-app”。
我在“mydomain.com”上运行“main-app”,在“socket.mydomain.com”的子域上运行“socket-app”
我通过 Express 的内置虚拟主机中间件将请求路由到套接字应用程序。
-- 在 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");
});
这工作正常,我可以看到我的套接字应用程序在 socket.mydomain 的端口 8080 上运行
但是,如所讨论的,通过 vhost 运行 Socket.IO 应用程序时,似乎存在 websockets 超时且未收到“升级”事件的问题here. https://github.com/senchalabs/connect/issues/459
所以我的问题是如何将这个“升级”事件从我的主应用程序传输到我的套接字应用程序,以便所有连接的套接字都可以在有人连接和断开连接时听到?
我尝试从“主应用程序”内发出“升级”事件,但它似乎不起作用。
app.on('upgrade', function(req, socket) {
socket.emit('upgrade', app);
});
我在这里缺少什么?