diff --git a/packages/server/lib/middlewares/recordPing.js b/packages/server/lib/middlewares/recordPing.js index e74de771..b81358bc 100644 --- a/packages/server/lib/middlewares/recordPing.js +++ b/packages/server/lib/middlewares/recordPing.js @@ -1,7 +1,27 @@ -const plugins = require('../plugins') +const mem = require('mem') -module.exports = (req, res, next) => - plugins(req.settings, req.deviceId) - .recordPing(req.deviceTime, req.query.version, req.query.model) - .then(() => next()) - .catch(() => next()) +const logger = require('../logger') +const plugins = require('../plugins') +const T = require('../time') + +const record = mem( + ({ deviceId, deviceTime, model, version, settings }) => + plugins(settings, deviceId) + .recordPing(deviceTime, version, model) + .catch(logger.error), + { + cacheKey: ({ deviceId }) => deviceId, + maxAge: (3 / 2) * T.minute, // lib/notifier/codes.js + }, +) + +module.exports = (req, res, next) => { + record({ + deviceId: req.deviceId, + deviceTime: req.deviceTime, + model: req.query.model, + version: req.query.version, + settings: req.settings, + }) + next() +}