Android 如何通过API层将ejabberd用于通过服务器的聊天应用程序

Android 如何通过API层将ejabberd用于通过服务器的聊天应用程序,android,api,xmpp,ejabberd,instant-messaging,Android,Api,Xmpp,Ejabberd,Instant Messaging,当前设置 我正在尝试在Android上构建一个类似WhatsApp的聊天应用程序。 在云端托管的后端,我设置了一个Ejabberd服务器。 现在使用Android上的smack library,我可以通过我在云端安装的Ejabberd服务器连接其他用户并向他们发送消息 上下文 这目前还可以,但稍后我可能想使用基于MQTT的自定义聊天解决方案取代Ejabberd,这将迫使我的所有应用程序用户强制更新他们的应用程序,因为应用程序现在的源代码中存储了Ejabberd服务器的URL,并直接与之通信 为了

当前设置
我正在尝试在Android上构建一个类似WhatsApp的聊天应用程序。 在云端托管的后端,我设置了一个Ejabberd服务器。 现在使用Android上的smack library,我可以通过我在云端安装的Ejabberd服务器连接其他用户并向他们发送消息

上下文
这目前还可以,但稍后我可能想使用基于MQTT的自定义聊天解决方案取代Ejabberd,这将迫使我的所有应用程序用户强制更新他们的应用程序,因为应用程序现在的源代码中存储了Ejabberd服务器的URL,并直接与之通信

为了解决这个问题,我尝试创建一层API端点,以便所有通信都通过API层从客户端电话到ejabberd服务器进行。所以,如果明天我用定制的MQTT解决方案(用于扩展)替换Ejabberd服务器,那么我就不需要我的应用程序用户来更新应用程序,因为API端点具有相同的URL,我可以简单地更改API层后面的代码,从而永远不依赖Ejabberd

TLDR:我面临的问题

我没有得到任何关于如何创建API层而不是让客户端电话直接与Ejabberd服务器通信的资源。问题是,按照XMPP协议,客户端和Ejabberd服务器直接建立一个持久连接,所以我如何将API层放在两者之间呢?到目前为止,已经有好几个星期的时间了,我被卡住了。

你不能将你的API层放在这两者之间,因为XMPP不像pubsub那样发布/订阅。。。。HTTP API对聊天也不好,因为客户端必须请求所有内容,而服务器不能推送任何内容。我建议您继续使用XMPP,因为它的伸缩性非常好