Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

收到新消息,未调用 conversation.read(),刷新后获取会话列表时,unreadMessagesCount 变为 0 #589

Open
musicode opened this issue Feb 4, 2018 · 7 comments

Comments

@musicode
Copy link

musicode commented Feb 4, 2018

如题

@musicode
Copy link
Author

musicode commented Feb 7, 2018

不新开 issue 了,v4.0.0-beta.4 没发到 npm...

@musicode
Copy link
Author

musicode commented Feb 8, 2018

@leeyeh 两个设备,A 未登录,B 给 A 发 20 条消息,此时,A 登录,会连续触发 message 回调,且收到消息的顺序,和发送消息的顺序不一致,并且未读消息数也不是 20,这是不是一个 bug 啊

@musicode
Copy link
Author

musicode commented Feb 8, 2018

此外,这20条消息当中,有些还漏掉了

@leeyeh
Copy link
Contributor

leeyeh commented Feb 8, 2018

你用的是这个模式:https://leancloud.cn/docs/realtime_guide-js.html#hash-422012010

@musicode
Copy link
Author

musicode commented Jul 9, 2018

感觉未读消息数还是有 bug,偶现数字不对的情况,暂时不知道怎么复现

@purefun
Copy link

purefun commented Jul 9, 2018

@leeyeh 能否在 https://leancloud.cn/docs/realtime_guide-js.html#hash-422012010 中写明清楚开启离线消息推送的副作用?

@leeyeh
Copy link
Contributor

leeyeh commented Mar 17, 2019

在登录之后会发生两件事:

  • 执行 query,得到 conversaion 列表
  • 服务端主动推送未读数过来

这两个事情的顺序是不能确定的。

如果服务端的未读数通知先到,那么 SDK 会缓存这个 conversation(这时候 unreadMessageCont 是 2),然后 query 结果到了,SDK 更新缓存的 conversation。此时一切都符合预期(unreadMessageCont 还是 2)。
如果 query 的结果先到,那么这时候打印 conversation.unreadMessagesCount 会是 0(因为 query 结果是不含 unread 数的),然后服务端的未读数通知到了,此时 SDK 会将这个 conversation 的 unreadMessageCont 更新为 2。

不管顺序如何,最终,我们都会收到一次 UNREAD_MESSAGES_COUNT_UPDATE 事件,并且 conversation 的 unreadMessageCont 值为 2。这是 SDK 能保证的,因此如果你用的是现代的前端框架,并且在 UNREAD_MESSAGES_COUNT_UPDATE 时更新了 View,那么最终的显示结果一定是对的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants