我构建了一个简单的NodeJS服务器,该服务器发出客户端事件。事件是一个如下所示的JSON对象:
{
"date": "2019-12-12T09:55:05.679Z","clientId": "Client01","ip": "10.1.1.1","event": "someEvent"
}
可以随时发出事件。我收到许多带有不同时间戳记(date
)的消息。
当前,我将所有数据存储在内存中。
如何按日期汇总客户端事件?
让我们以15分钟的时间为例,因此我得出每个时间段的客户端事件总数,例如:
const timestamps = ["2019-12-12T09:00:00.000Z","2019-12-12T09:15:00.000Z","2019-12-12T09:30:00.000Z"];
const totalNumEvents = [50,27,82];
const clientIds = ["Client01","Client02","Client03"];
很抱歉,如果这个问题太笼统,我试图通过谷歌搜索寻找方向,但是如果不使用像MongoDB这样的框架/数据库就找不到任何解决方案。
到目前为止,我所做的是为每个clientId创建一个对象并将事件推送到其中。 (每个事件都有一个回调)
const onEventArrived = (client) => {
if (!clients[client.clientId]) {
console.log(`[New] Client Added - ${client.clientId}`);
clients[client.clientId] = [{ date,client}];
} else {
console.log(`[Exist] New Client Message for ${client.clientId}`);
clients[client.clientId].push({ date,client});
}
});
回到问题上,我拥有每个客户端的所有事件,但是如何将随机时间汇总到固定的15分钟窗口中?