如何轻松地运行自定义XMPP服务器应用程序?

时间:2010-05-25 12:46:01

标签: xmpp

参考this question,XMPP被提及作为IM互操作性的开放标准。

对于我的应用程序,如果我使用XMPP进行内部客户端 - 服务器通信,或者开发自己的内部协议,但是在服务器上使用XMPP以允许在以后与其他服务器进行通信,则会有很大的选择。我的直觉是后者会更容易,也许我高估了采用现有的Jabber服务器或XMPP服务器库并构建自定义服务器应用程序需要做多少工作?

如果我的客户总是与我的服务器通信,而不是直接与其他服务器通信,那么使用XMPP是否合理或过度使用?

假设我想为用户,消息,组和自定义数据创建自己的数据库。实际涉及使用XMPP进行此设置,以便我可以自由地将数据发送到我的服务器,并让我的自定义服务器逻辑处理它?那里的任何库都允许我运行一个“骨架”XMPP服务器,我提供自己的处理程序,这些处理程序在收到消息时调用,等等吗?

我对XMPP有了全面的了解,但是我实际上从它开始有点迷失,甚至在区分我是否需要Jabber服务器应用程序或者是否需要一个开源服务器库的程度上

还有许可问题。我当然不打算开源主代码库,如果我使用GPL XMPP解决方案进行客户端 - 服务器通信,我的理解是我很难不用GPL“污染”我的代码。

3 个答案:

答案 0 :(得分:2)

如果你在linux下很容易

sudo apt-get install ejabberd

然后你可以将你喜欢的IM客户端指向localhost:5222,你就完成了。 如果你想要一个域名等,肯定需要更多配置/安装的东西,但我认为这不是你要求的。

注意:ejabberd还有一个Windows版本,http://www.process-one.net/en/ejabberd/downloads

答案 1 :(得分:1)

如果你真的想要XMPP,Openfire将是最容易设置的http://www.igniterealtime.org/projects/openfire/之一,如果你使用Java,我也会看看BlazeDS。

答案 2 :(得分:1)

您可以编写XMPP服务器组件。这适用于任何实现XEP 0114的XMPP服务器。所有主要的XMPP服务器实现都是这样做的。

如果component.localhost.localdomain上有一个XMPP服务器组件且您的服务器在localhost.localdomain上运行,则服务器收到的任何发送给component.localhost.localdomain上任何用户的消息将立即通过到服务器组件。在那里你可以随心所欲地做任何事情(例如处理,存储在数据库中等)。回复再次通过XMPP服务器发送给原​​始发件人,因此组件不必处理服务器任务。

Ruby库xmpp4rblather都可以很容易地在Ruby中编写服务器组件。

XMPP服务器组件相对于服务器插件的最大优势在于,它们独立于服务器代码,因为它们通过标准化接口进行通信(如XEP 0114中所定义)。缺点是组件无法访问服务器内部数据结构,这可能是也可能不是依赖于您的应用程序的问题。

但是,如果你真的不希望你的应用程序与其他服务器通信,那么使用XMPP并没有多大意义。