我正在创建一个使用 django 作为后端的 iOS 应用程序。我需要在用户之间建立聊天功能。
听说XMPP很适合实时通信,我已经成功设置ejabberd作为XMPP服务器。但是我仍然很难处理细节:
我先创建了应用程序,然后创建了聊天功能,所以在我设置 ejabberd 之前,我的 django DB 中已经有用户了。我需要 ejabberd 针对我现有的数据库对用户进行身份验证,我几乎通过使用外部身份验证解决了这个问题。只有一个小问题,因为 ejabberd 似乎需要像username@abc.com这样的 jabber ID ,这里是abc表示 ejabberd 的虚拟主机。我不知道也许我只能在我的服务器上使用一个虚拟主机(即域名)?但是一开始我要求用户使用来自不同域的电子邮件进行注册,例如 gmail.com、yahoo.com,但username@gmail.com@abc.com不是有效的 jabber ID,所以也许是一个我可以在这里做的小技巧是将第一个 @ 转换为 # 并在后端的 python 脚本中正确处理它。但也许我做错了?
另一个问题是关于用户资料。我还将用户信息存储在我的 django 数据库中,例如显示名称、头像 url 等。我了解到,如果我想从 XMPP 服务器获取这些信息,我可以使用 vCard 模块。所以也许我需要在两个地方有重复的信息?而且我还没有弄清楚如何将用户信息从 DB 同步到 ejabberd。或者也许我只需要一个来源,即我的数据库,然后 iOS 客户端可以在需要时从后端查询信息?
我觉得 XMPP 不容易设置,在你的应用程序中使用它真的很流行吗?特别是如果聊天不是您的应用程序的主要功能,并且您不希望收到来自大量用户的大量消息?