Javascript 只发布10秒前从现在开始阅读的内容
我需要从我的CPU、内存和其他存储在集合中的东西发布统计数据。问题是,从现在起,它只需要发布最后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,
我加入一张图片来帮助理解这一点: 我编写了一个函数,但问题是它没有删除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()}}]
})
});