Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只发布10秒前从现在开始阅读的内容_Javascript_Meteor_Logic_Publish Subscribe - Fatal编程技术网

Javascript 只发布10秒前从现在开始阅读的内容

Javascript 只发布10秒前从现在开始阅读的内容,javascript,meteor,logic,publish-subscribe,Javascript,Meteor,Logic,Publish Subscribe,我需要从我的CPU、内存和其他存储在集合中的东西发布统计数据。问题是,从现在起,它只需要发布最后10秒。 我加入一张图片来帮助理解这一点: 我编写了一个函数,但问题是它没有删除11秒、12秒的信息。。。比现在老 Meteor.publish('dockerStats', function readInfosDockerStats(timeLimitSecond) { console.log(moment(new Date()).subtract(timeLimitSecond,

我需要从我的CPU、内存和其他存储在集合中的东西发布统计数据。问题是,从现在起,它只需要发布最后10秒。
我加入一张图片来帮助理解这一点:

我编写了一个函数,但问题是它没有删除11秒、12秒的信息。。。比现在老

Meteor.publish('dockerStats', function readInfosDockerStats(timeLimitSecond) {
        console.log(moment(new Date()).subtract(timeLimitSecond, 'second').toDate())
        return DockerStats.find(
               { read: { "$gte": moment(new Date()).subtract(timeLimitSecond, 'second').unix()} },
);
我想我需要使用
$和
,并查找相关信息

>now-10sec && <now

流星出版物的工作方式导致了这个问题

有选择地从服务器发布数据。但一旦发布,它就不会从客户端集合中删除。因此,随着越来越多的数据发布,您的客户端数据会随着时间的推移而增长

因此,您还需要在客户端代码(即订阅)中进行筛选。这将解决问题。然而,它将依赖于客户端和服务器之间的精确时间同步


随着时间的推移,客户端集合也会增加,最终会给您带来一些内存/性能问题。所以你可能想考虑一种不同的方法。您可以创建一个由服务器管理的单独集合,只包含最后10秒的数据。较旧的数据会被删除,客户端订阅也很简单,不需要在客户端和服务器之间进行精确的时钟同步。

这是执行我需要做的事情的好方法。我用你的想法创建了第二个收藏,效果很好!太好了,很乐意帮忙
Meteor.publish('dockerStats', function readInfosDockerStats(timeLimitSecond) {
  return  DockerStats.find(
      { $and: [{ read:{"$gte": moment(new Date()).subtract(timeLimitSecond, 'second').unix()}},{read:{"$lte":  moment(new Date()).unix()}}]
    })
});