通过

client.on('unreadmessagescountupdate', (conversations)=>{
     console.log(conversations)
})

有时候client初始化之后可以收到未读消息数量,有时候则收不到,根本没有触发这个事件,而且在我们的测试的时候总是和某些用户相关,就是说总有几个用户收不到,有几个用户就能收到,我们用的是mongodb的id来做用户id的。

并且按照文档的说法,这个是用于登录之后获得未读消息数量的,回调函数的参数应该是一个数组,然而如果登录之后收到了新的消息,这个事件仍然会被触发,并且回调函数收到的参数是此时收到新消息的conversation这个对象。文档里并没提到这一点

现在没办法我只能使用被标记为deprecated的unreadmessages事件来代替他,然而真正运行的时候并没有报depredated……

首先,能否麻烦试用一下这个 demo,看看这个 demo 的未读消息功能是否符合你的预期: https://leancloud.github.io/leanmessage-demo13

如果是的话,麻烦你提供一下有问题的用户的 clientId,以及没有收到 unreadmessagescountupdate 但是确实有未读消息的 conversation 的 id。

并且按照文档的说法,这个是用于登录之后获得未读消息数量的,回调函数的参数应该是一个数组,然而如果登录之后收到了新的消息,这个事件仍然会被触发,并且回调函数收到的参数是此时收到新消息的conversation这个对象。

不是数组的问题在 v3.4.1 中修复了。设计上,只要有对话的未读消息数有变化这个事件就会派发,在线收到消息也属于「对话的未读消息数有变化」的情况。

真正运行的时候并没有报depredated

是的,因为一些技术原因暂时没法在使用 unreadmessages 的时候打印日志。

我发现是因为有一个 conversation 被删除导致在处理未读消息的时候内部异常了。

SDK 会发个 fix 版本修复这个问题。

啊,是了,我们在做测试的时候经常为了减少干扰把之前的conversation删掉

fixed in master

npm i leancloud/js-realtime-sdk#dist --save

新版需要过几天再发。