62 lines
1.0 KiB
JavaScript
62 lines
1.0 KiB
JavaScript
'use strict'
|
|
|
|
// install redis first:
|
|
// https://redis.io/
|
|
|
|
// then:
|
|
// $ npm install redis online
|
|
// $ redis-server
|
|
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var express = require('../..');
|
|
var online = require('online');
|
|
var redis = require('redis');
|
|
var db = redis.createClient();
|
|
|
|
// online
|
|
|
|
online = online(db);
|
|
|
|
// app
|
|
|
|
var app = express();
|
|
|
|
// activity tracking, in this case using
|
|
// the UA string, you would use req.user.id etc
|
|
|
|
app.use(function(req, res, next){
|
|
// fire-and-forget
|
|
online.add(req.headers['user-agent']);
|
|
next();
|
|
});
|
|
|
|
/**
|
|
* List helper.
|
|
*/
|
|
|
|
function list(ids) {
|
|
return '<ul>' + ids.map(function(id){
|
|
return '<li>' + id + '</li>';
|
|
}).join('') + '</ul>';
|
|
}
|
|
|
|
/**
|
|
* GET users online.
|
|
*/
|
|
|
|
app.get('/', function(req, res, next){
|
|
online.last(5, function(err, ids){
|
|
if (err) return next(err);
|
|
res.send('<p>Users online: ' + ids.length + '</p>' + list(ids));
|
|
});
|
|
});
|
|
|
|
/* istanbul ignore next */
|
|
if (!module.parent) {
|
|
app.listen(3000);
|
|
console.log('Express started on port 3000');
|
|
}
|