node.js+;express:从不同的;“用户/连接”;文件夹

node.js+;express:从不同的;“用户/连接”;文件夹,node.js,express,Node.js,Express,我通过office Web服务器(node.js+express)提供SPA服务,但这些静态文件并非来自静态公用文件夹。Web服务器从另一台服务器获取信号,表示可以下载新客户端。office server获取存档并将其解压缩到新文件夹(名称:client/clientxxxxx.zip\u content/)。所有新连接都应使用新文件夹,但旧连接必须使用第一次连接时使用的版本 我想我在识别同一个用户/连接时遇到了问题,因为SPA将是无状态的,我无法更改静态文件。PHP为会话提供了一个自动的id(

我通过office Web服务器(node.js+express)提供SPA服务,但这些静态文件并非来自静态公用文件夹。Web服务器从另一台服务器获取信号,表示可以下载新客户端。office server获取存档并将其解压缩到新文件夹(名称:client/clientxxxxx.zip\u content/)。所有新连接都应使用新文件夹,但旧连接必须使用第一次连接时使用的版本

我想我在识别同一个用户/连接时遇到了问题,因为SPA将是无状态的,我无法更改静态文件。PHP为会话提供了一个自动的id(cookie中的id或作为get变量)。有特快专递的吗?以及如何提供来自不同主文件夹的所有文件

我的简单解决方案:

在子文件夹中使用HTML和图像的测试,它与(Thx Alex)和简单的
sendFile
一起工作

app.use(session({
    genid: function(req) {
        return uuid.v4();
    },
    cookie: {
        path: '/',
        httpOnly: true,
        secure: false,
        maxAge: null
    },
    resave: true,
    saveUninitialized: true,
    secret: 'this is not a secret'
}));
app.get(['/','/:path*'], function (req, res, next) {
    req.session.clientPath = req.session.clientPath || path.join(main.paths.client, main.versions.client + '_content');
    var clientFile = path.normalize(path.join(req.session.clientPath, req.path === '/' ? '/index.html' : req.path));
    if (clientFile.indexOf(main.paths.client) === 0 && fs.existsSync(clientFile)) {
        res.sendFile(clientFile);
    } else {
        res.status(404).send('Not found');
    }
});

为什么不直接覆盖旧文件呢?对于快速会话:如果SPA从旧版本加载其HTML,然后服务器写入新文件,并且新的JavaScript文件不兼容,这将是一个坏主意。谢谢你的链接。那么,解决方案就是创建一个对新命名的服务器文件夹的引用,可能是在数据库表中。假设解压过程完成后会向数据库添加一个条目,Express应用程序会将该数据拉到新目录。您可以使用内部消息通知Express/Node获取最新的目录名。