如何使用 ejabberd 聊天应用程序通过 API 层传递服务器

Posted

技术标签:

【中文标题】如何使用 ejabberd 聊天应用程序通过 API 层传递服务器【英文标题】:How to use ejabberd for chat app passing server through API layer 【发布时间】:2020-04-09 12:13:45 【问题描述】:

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

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

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

TLDR:我面临的问题 我没有获得任何关于如何创建 API 层而不是让客户端电话直接与 Ejabberd 服务器通信的资源。问题是根据 XMPP 协议,客户端和 Ejabberd 服务器直接建立持久连接,那么我如何将我的 API 层放在两者之间?到现在已经有好几个星期的头撞了,我被困住了。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何使用 ejabberd 聊天应用程序通过 API 层传递服务器的主要内容,如果未能解决你的问题,请参考以下文章

ejabberd 和推送通知

如何在聊天应用程序中发送媒体内容?

Ejabberd 聊天服务集成

使用 ejabberd 进行限时聊天

删除聊天室 ejabberd

如何在 Ejabberd 中启用基于角色的用户聊天