gpt4 book ai didi

android - 由于通过 openfire 连接丢失而丢失消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:16 24 4
gpt4 key购买 nike

在移动设备上关闭互联网会直接导致我的聊天应用程序出现问题。消息未存储在 openfire 离线表中,因为 Openfire 仍然显示我在与服务器突然断开连接时在线。当尝试重新登录时,在此期间发送的消息将丢失。

我正在开发一个聊天应用程序,登录 openfire 后我可以聊天,其他用户可以在线看到我,但问题是如果一个用户失去连接,比如 WIFI 关闭,在这种情况下 Openfire 不会显示我的状态显示为离线,仍然显示在线,导致消息丢包。

请提供我无法解决的解决方案。

旁注 whatsapp 和其他应用程序如何发送消息。他们是否在服务器和确认上使用消息存储策略,或者我在这里遗漏了什么。

最佳答案

客户端和服务器都需要确认消息已发送和传递,例如您向其他人发送消息,您在这里可以做的是将此消息保存在您的服务器上,此消息将从服务器发送接收方并等待接收方确认消息已送达,一旦收到确认 - 从服务器中删除消息。

How whatsapp do it?我在 Quora 上找到了 Michael Donohue 的这个答案

Whatsapp 的工作原理是存储和转发,WhatsApp 客户端将存储您发送的任何消息,并不断尝试将其发送到 WhatsApp 服务器。当 WhatsApp 移动应用程序连接到聊天服务器时,存储转发过程会双向发生。客户端将其消息存储中的任何未决消息发送到服务器,而服务器将发往该客户端的所有累积消息发送到客户端。这个过程是在确认的基础上完成的。这意味着重复发送消息,直到另一方确认收到消息。一旦消息被确认,服务器就会丢弃消息——没有长期存储。一旦 ack 到达,客户端将更新 UI 以仔细检查状态,但会保留消息。

关于android - 由于通过 openfire 连接丢失而丢失消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com