将API添加到xmpp服务器?不清楚使用自定义API的xmpp服务器的概念

时间:2011-12-23 11:24:44

标签: android iphone xmpp ejabberd openfire

我正在通过iPhone和Android上的原生应用程序访问聊天应用程序。我花了一些时间研究它将如何完成,但我还没有很好地掌握它。例如,我已经看过并遵循移动设备上的教程(http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/)

但是,让我们说我希望我的聊天应用程序能够超越登录/检查&发送消息,我该怎么做?

例如,我想添加的一项功能是能够在用户群中搜索以下条件:

  • 立即在线用户
  • 符合某些标准(地点,年龄等)的用户

例如,如果我使用ejabberd或Openfire作为我的xmpp服务器,如何添加可从iPhone / Android访问的这些新自定义API?

我只是在这里做一个粗略的例子,但也许能做这样的事情会很好:

- (NSArray *)findUsersInCity:(NSString *)cityName

如何让xmpp服务器将符合城市名称标准的用户列表传回给我?

提前谢谢!!

1 个答案:

答案 0 :(得分:4)

扩展XMPP服务器有几种不同的方法:

XMPP组件

组件分别存在于XMPP服务器。您可以使用几乎任何语言编写它们,并按照协议(http://xmpp.org/extensions/xep-0114.html)连接到XMPP服务器。组件注册以处理服务器的子域,并且发往该组件的任何消息/ IQ将直接从XMPP服务器传递到您的代码,以便您进行处理和响应。例如,邮件可以发送到user@search.domain.com/resource而不是user@domain.com/resource

组件的好处是它应该适用于任何XMPP服务器(无论如何都支持组件,这些组件是大多数主要组件)。例如,如果你从Openfire改为ejabberd,你不应该做任何工作。缺点是他们无法访问服务器本身的数据。如果您想提供对外部数据(比如您自己的数据库)的访问,那就很好,但可能还不够。

<强>插件/模块

这些是特定于服务器的,必须使用与服务器相同的语言编写。 Openfire有插件,ejabberd有模块。这些可以与XMPP服务器集成,为您提供更多选择。但是,切换XMPP服务器需要从头开始开发。如果您想为Openfire制作插件,请查看Plugin Guide和Openfire API:API Docs。 API非常广泛,您可以获得服务器可用的大部分数据。

修改源代码

不是一个不错的选择,但可能值得一提 - 您可以下载Openfire的源代码,进行修改并重新构建它。如果您确定API无法满足您的需求,我只会这样做。

相关问题