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
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); |
|
}) |
|
} |
|
}); |
|
}; |