它接口就像使用聊天应用程序,使用openfire和smack可以有两种方式,
Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并向服务器发送更新。如果它没有连接,那么openfire上的插件可以使消息保持脱机状态,并在客户端再次连接后发送它们。 在此方案中接收所有消息,
如果在任何其他情况下连接与服务器断开连接,则会导致邮件丢失。目前,应用程序正在使用此架构。
2.Smack与openfire服务器建立连接,只要连接到openfire服务器,它就可以接收并向服务器发送更新,直到应用程序处于前台。一旦进入后台,应用程序将完全与服务器断开连接。在这种情况下,当应用程序处于脱机状态时,openfire必须将所有消息发送到Firebase服务器,同一应用程序侦听firebase通知,当它从firebase接收通知时,它会重新连接到openfire并获取消息并显示或直接显示消息来自firebase(在这种情况下,此记录也会转到firebase服务器)。应用程序从gcm接收该通知,然后需要在应用程序中管理有关消息传递等。
答案 0 :(得分:2)
1-哪种方式更好,更安全,更可靠? 答:第二种方式
2-我的应用程序正在使用方式1,我应该切换到第二种方式吗? 答:你应该但显然需要Openfire技能来开发一个将消息路由到FCM的插件。
3-可以确定应用程序是否始终保持连接的可能原因是什么?它也消耗更少的面糊? 答:简单地说,如果我们减少XMPP流量,可以节省处理能力,从而减少电池消耗。但显然对于聊天应用程序来说,这不是一个选择。因此,为了保持应用程序的交互性和电池友好性,当应用程序转到后台并依赖推送通知(在服务器端集成)时,应断开XMPP。