使用node.js为每个用户使用单独的线程

时间:2019-03-27 01:21:09

标签: javascript node.js

我已将此应用程序部署到heroku,用户ID与api请求一起发送,但是它并没有按我希望的那样工作,在第一次尝试时它就起作用了,并且该功能对于正确的用户停止了,但是在测试时通过一些硬性设置,例如更改浏览器,IP地址,设备等。我得到了随机结果。应用程序崩溃,有时只是无法清除间隔。

不确定如何解释该问题,但我的目标是从前端控制节点服务器(我也在使用react和JS),后端需要无限期地运行,所以也许是因为heroku的东西睡着了,但是即使在30分钟之前,我仍然出现错误,用户可以在应用程序上通过单击按钮来运行和停止该功能,结果是某些用户连接到其他位置,并且不确定是什么导致该错误发生。

如果您需要更多信息,请让我知道,下面的代码是为了简化起见,真实函数获取网站屏幕快照,上传imgur图像,然后更新firebase数据库,所有操作都是异步的,没有回调。 / p>

const express = require('express')
const app = express()
const port = 1403

let timers = {};

app.get('/api/v1/:user/', (request, response) => {

    var user = request.params.user;

    if (request.query.running === 'false') {
        clearInterval(timers[user]);
        console.log("Thread stopped for "
            + user);
    } else {
        console.log("Thread started for "
            + user);
            timers[user] = setInterval(
            function apiCall() {
                console.log("api called - thread running for "
                    + user);
            }, 5000);
    }
    response.sendStatus(200);
})

app.listen(port, () => console.log(`App running on port ${port}!`))

0 个答案:

没有答案