前端和后端定时器/事件同步?

时间:2017-10-18 14:40:16

标签: javascript express timer

我有一个API端点,它接受来自客户端的一些数据。还有一个1分钟的计时器,客户可以看到。 我希望实现的目标是:

虽然计时器处于活动状态(> 0),但发送到API的任何帖子都保存在存储或数组(或其他内容)中。一旦计时器到达零,客户端就不能再向API发出请求,并且在计时器处于活动状态时发出和存储的任何请求现在都通过一个函数进行处理 - 例如,我只想说这个函数记录所有数据到屏幕。

也许我正在以错误的方式考虑这个问题,但是如何同步前端和后端计时器,以便服务器和客户端知道何时停止处理POST请求并让服务器知道是时候处理在1分钟内发送的所有数据。


    var express = require("express");
    var app = express();

    app.post("/api/data", function(req, res){
    //   do something here - no clue
    });

    app.listen(process.env.PORT, () => {
        console.log("server running on port: ", process.env.PORT);
    });

如果我解释得不好,请道歉。 感谢我能得到的任何帮助,谢谢:)

2 个答案:

答案 0 :(得分:1)

您希望实现什么,因为让客户决定某事是您可以做出的最糟糕的选择。

  1. 也许将服务器时间传递给客户端。计算差值然后开始计算。但是,如果客户端实际上允许发布,请检查服务器。
  2. 或者让服务器计算在倒计时到达之前剩余的秒数并将这些秒数传递给客户端。但是服务器仍然需要检查有效时间。
  3. 我会选择其中一个。让服务器成为决定因素而不依赖于客户端。因为您可以轻松更改PC时间。

答案 1 :(得分:0)

当客户端的定时器达到0时,向服务器发送api呼叫。当服务器获得此api调用时,将布尔值设置为false。如果此布尔值为false,则忽略数据。我在代码中的意思是这样的

var ignore = false;
app.post("/api/data/stop", function(req,res){
  ignore = true;
});
app.post("/api/data", function(req, res){
    if(!ignore){
  // listening to data
    }
});

app.listen(process.env.PORT, () => {
    console.log("server running on port: ", process.env.PORT);
});