|
@ -496,7 +496,7 @@ class Sessions extends RedisModel {
|
|
|
return;
|
|
|
}
|
|
|
start_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, start_msg_id,end_msg_id , page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if (handler) {
|
|
|
handler(err, null);
|
|
@ -520,7 +520,7 @@ class Sessions extends RedisModel {
|
|
|
return;
|
|
|
}
|
|
|
end_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id,start_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if (handler) {
|
|
|
handler(err, null);
|
|
@ -596,26 +596,46 @@ class Sessions extends RedisModel {
|
|
|
handler(null, []);
|
|
|
return;
|
|
|
}
|
|
|
if(endMsgScore>startMsgScore){
|
|
|
redis.zrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
|
|
|
.then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
handler(null, []);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// 从消息时间表中过滤出要获取的消息ID列表,倒序取出消息
|
|
|
redis.zrevrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
|
|
|
.then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
handler(null, []);
|
|
|
return;
|
|
|
}
|
|
|
redis.hmgetAsync(messagesKey, res).then(function (messages) {
|
|
|
handler(null, messages);
|
|
|
}).then(function () {
|
|
|
Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
|
|
|
})
|
|
|
})
|
|
|
.catch(function (err) {
|
|
|
logger.error("Get message by page failed: ", err);
|
|
|
|
|
|
redis.hmgetAsync(messagesKey, res).then(function (messages) {
|
|
|
handler(null, messages);
|
|
|
}).then(function () {
|
|
|
Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
|
|
|
handler(err, false);
|
|
|
})
|
|
|
})
|
|
|
.catch(function (err) {
|
|
|
logger.error("Get message by page failed: ", err);
|
|
|
}else{
|
|
|
// 从消息时间表中过滤出要获取的消息ID列表,倒序取出消息
|
|
|
redis.zrevrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
|
|
|
.then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
handler(null, []);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
handler(err, false);
|
|
|
})
|
|
|
redis.hmgetAsync(messagesKey, res).then(function (messages) {
|
|
|
handler(null, messages);
|
|
|
}).then(function () {
|
|
|
Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
|
|
|
})
|
|
|
})
|
|
|
.catch(function (err) {
|
|
|
logger.error("Get message by page failed: ", err);
|
|
|
|
|
|
handler(err, false);
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
})
|