【问题标题】:How messenger works in sync with multiple devicesMessenger 如何与多个设备同步工作
【发布时间】:2018-05-14 09:33:27
【问题描述】:

我正在尝试在我的应用程序中引入信使(聊天)功能。 我无法弄清楚如何使功能在多个设备上同步。

假设我在手机上使用聊天,然后我登录到我的桌面并开始在那里聊天。我将如何在两台设备上获取消息以及两者如何相互同步。此外,为了让发件人获得已读确认,应从任一设备读取邮件,但未读通知应显示在发件人的未读邮件设备上,除非他打开并阅读邮件。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 为了将来参考,如果您觉得需要为同一个问题添加前端、后端、数据库、通信方法的标签,那么问这个问题就“太宽泛”了这里有个问题。确定您想从应用程序的哪个部分开始,启动它,然后在遇到每个问题时询问有关该部分的问题。这就是您“可以”将此网站用作资源的方式。
  • @NeilLunn 感谢您的指导。接受和赞赏。 :)

标签: socket.io chat


【解决方案1】:

对于您想要做的问题的第一部分,就像您登录的 FB Messenger 一样,您会发现您的整个消息与设备无关。要实现这一点,您可以在设备应用程序上拥有将发布到服务器的上次登录时间,并且该时间的所有消息都将被检索给用户。但是想象一下,用户已经从手机上阅读了他所有的消息,但自一个月以来他没有打开电脑。如果您没有将消息标记为已读,他会发现大量消息未读,但他实际上是在手机上阅读的,这会给您带来巨大的可用性问题。 对于你的情况,我觉得你需要做 FB Messenger 所做的事情。从您的 conv 中检索最新消息及其实际状态。并根据需求向上滚动加载。

因此您的消息将只有 1 个状态(已读或未读)以及您可以与设备上次同步时间匹配的日期。

【讨论】:

  • 是的,我明白了你想要表达的意思。完全有道理。 :)
  • :) 谢谢.. 那么你最终的实施想法是什么?如果我的回答有助于标记它:)
  • 您推荐的相同策略。我在 db 中设置了一个标志,用于传递和读取。当用户上线时,所有投递状态为 false 的消息都会被获取。如果他同时从第二台设备登录,他会在 last message 保存在数据库中之后收到消息。当用户向上滚动时,他继续从服务器获取消息。如果您建议对此进行更多修改,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 2021-04-23
  • 2015-07-13
  • 2018-08-29
  • 1970-01-01
  • 2018-09-29
  • 2021-11-07
相关资源
最近更新 更多