You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

63 lines
1.9 KiB

var url = require('url');
var logger = require('../../tools/logger');
var danmaku = require('../../models/danmaku');
var redis = require('../../tools/redis');
module.exports = function (req, res) {
res.header('content-type', 'application/json; charset=utf-8');
var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
var query = url.parse(req.url, true).query;
var id = query.id;
var max = query.max;
redis.client.get(`v2get${id}`, function (err, reply) {
if (reply) {
logger.info(`v2: DPlayer id ${id} form redis, IP: ${ip}`);
var data = JSON.parse(reply);
var data = max ? data.slice(data.length - max, data.length) : data;
var typeMap = {
'right': 0,
'top': 1,
'bottom': 2
}
res.send(JSON.stringify({
code: 0,
version: 2,
danmaku: data.map(item => [item.time, typeMap[item.type], item.color, item.author, item.text])
}));
}
else {
logger.info(`v2: DPlayer id ${id} form mongodb, IP: ${ip}`);
danmaku.find({ player: id }, function (err, data) {
if (err) {
logger.error(err);
}
redis.set(`v2get${id}`, JSON.stringify(data));
var data = max ? data.slice(data.length - max, data.length) : data;
var typeMap = {
'right': 0,
'top': 1,
'bottom': 2
}
res.send(JSON.stringify({
code: 0,
version: 2,
danmaku: data.map(item => [item.time, typeMap[item.type], item.color, item.author, item.text])
}));
})
}
});
};