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.
43 lines
1.3 KiB
43 lines
1.3 KiB
7 years ago
|
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(`dplayer${id}`, function(err, reply) {
|
||
|
if (reply) {
|
||
|
logger.info(`DPlayer id ${id} form redis, IP: ${ip}`);
|
||
|
res.send(reply);
|
||
|
}
|
||
|
else {
|
||
|
logger.info(`DPlayer id ${id} form mongodb, IP: ${ip}`);
|
||
|
|
||
|
danmaku.find({player: id}, function (err, data) {
|
||
|
if (err) {
|
||
|
logger.error(err);
|
||
|
}
|
||
|
|
||
|
var dan = {
|
||
|
code: 1,
|
||
|
danmaku: []
|
||
|
};
|
||
|
dan.danmaku = max ? data.slice(0, max) : data;
|
||
|
var sendDan = JSON.stringify(dan);
|
||
|
res.send(sendDan);
|
||
|
|
||
|
redis.set(`dplayer${id}`, sendDan);
|
||
|
})
|
||
|
}
|
||
|
});
|
||
|
};
|