【问题标题】:Adding APIs to a xmpp server? Unclear about the concept of the xmpp server with custom API将 API 添加到 xmpp 服务器?不清楚自定义 API 的 xmpp 服务器的概念
【发布时间】:2012-01-26 18:43:06
【问题描述】:

我正在做一个聊天应用程序,可通过 iPhone 和 Android 上的本机应用程序访问。我花了一些时间研究它是如何完成的,但我仍然没有很好地掌握它。例如,我在这里 (http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/) 看到并遵循了关于移动 tuts 的教程

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

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

  • 用户现在在线
  • 满足特定条件(位置、年龄等)的用户

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

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

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

如何让 xmpp 服务器向我传回符合 cityname 条件的用户列表?

提前谢谢你!!

【问题讨论】:

    标签: android iphone xmpp ejabberd openfire


    【解决方案1】:

    有几种不同的方式来扩展 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 无法满足您的需求,我只会这样做。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2014-03-15
    • 1970-01-01
    • 2013-09-30
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多