2017-07-31 11:33:31 +05:30

41 lines
894 B
JavaScript

'use strict'
const { dns } = require('concordant')()
const redis = require('redis')
module.exports = eventLogger
function eventLogger () {
const QNAME = 'eventservice'
var client
const endpoint = '_main._tcp.redis.micro.svc.cluster.local'
dns.resolve(endpoint, (err, locs) => {
if (err) {
console.error(err)
return
}
const { port, host } = locs[0]
client = redis.createClient(port, host)
})
function middleware (req, res, next) {
if (!client) {
console.log('client not ready, waiting 100ms')
setTimeout(middleware, 100, req, res, next)
return
}
const event = {
action: 'record',
type: 'page',
url: `${req.protocol}://${req.get('host')}${req.originalUrl}`
}
client.lpush(QNAME, JSON.stringify(event), (err) => {
if (err) console.error(err)
next()
})
}
return middleware
}