【发布时间】:2017-04-13 23:20:48
【问题描述】:
我有一个在 node.js 中运行冗长进程的应用程序。我将这些冗长的过程限制为每个用户一个。
当用户开始一个漫长的过程时,我会这样做
req.session.busy = true;
req.session.save();
当这个过程完成后,我会做
req.session.busy = false;
res.status(200).json({
done: true
});
如果用户同时尝试启动另一个冗长的进程,我会这样做
if (req.session.busy) {
res.status(200).json({
busy: true
});
}
我想做的是发送响应以确认已收到请求。
res.status(200).json({
process_started: true
});
但这会结束响应。我不能再在运行进程结束时设置 busy = false 并发送进程完成的响应。
有什么方法可以保存会话,发送已收到请求的状态,然后在进程完成时发送 status(200) 响应?
也许除了 200 之外还有另一种状态,这将使响应在节点中保持活动状态。
我试过了
res.status(100).json({
process_started: true
});
希望 http 状态代码 100 - Informal(继续)可以解决问题,但没有雪茄。此后,当我尝试发送状态(200)时,应用程序将崩溃。错误:发送后无法设置标头。
【问题讨论】:
-
可能想看看网络套接字(socket.io for node)