我试图获取特定频道中特定成员的未读消息数。要做到这一点,我希望使用documentation中定义的 channel.getUnconsumedMessagesCount()。
myChannel.join()
.then(function(c) {
console.log('Joined channel ' + c.sid);
return myChannel.getUnconsumedMessagesCount();
})
.then(m => {
console.log('current count unread: ' + m);
});
未读计数始终返回0.要进行测试,我会执行以下操作:
最初我调用了.getUnconsumedMessagesCount()而没有首先执行join(),我认为这可能是问题,但即使加入仍然没有。
答案 0 :(得分:4)
在获得UnconsumedMessagesCount之前,您需要手动设置上次阅读的消息(Send a Consumption Report)
像这样的东西(JS) channel.getMessages(1).then(function (messages) {
var last_message_index = messages.items[0].index;
channel.updateLastConsumedMessageIndex(last_message_index);
});
答案 1 :(得分:4)
我在javascript SDK中遇到同样的问题,它始终返回0。
我最终做了以下工作
const count = channel.getMessagesCount();
const unreadCount = channel.lastConsumedMessageIndex === null ? count : count - channel.lastConsumedMessageIndex - 1
我还注意到,在channel.lastConsumedMessageIndex
中实际返回该信息之前,使用任何函数来设置所消耗的消息可能需要一整分钟。