XMPP服务器:ejabberd vs openfire vs prosody

30

我正在尝试弄清楚XMPP的工作原理(对于协议的初学者),并且想要建立一个服务器。

到目前为止,我看到了3个主要的挑战:

  • ejabberd
  • openfire
  • prosody

我查看了一些网站以及在维基百科上查找,但是我无法看到它们的利弊。

哪里可以找到一些易懂的信息呢?

PS:如果上下文有些重要,我想在我的个人树莓派上设置服务器(所以处理能力不算太强),我的最终目标是使用XMPP为一个小型的Android应用程序使用Google云消息传递服务。


1
以下答案未涵盖现代设置的简易性:在https://github.com/jsxc/xmpp-cloud-auth/wiki/raspberry-pi-en上有一个简单的教程,介绍如何在树莓派上设置ejabberd+Nextcloud,并实现100%“现代XMPP合规性”。 - Marcel Waldvogel
4个回答

22
我参与测试了一个开源XMPP web客户端(JSXC)与ejabberdProsody的兼容性,并注意到以下区别。请注意,我更多地使用了ejabberd,因此自然会有更多的吹毛求疵,但也有更多的赞美。

ejabberd

优点

  • 已经实现的机制通常非常可靠,可能是因为一家公司在背后提供需要这种质量的服务。
  • 使用ejabberdctl和管理Web界面,可以在进程运行时配置很多东西。即使您需要大量修改配置文件,重新加载它们也会正确执行而不会中断。
  • ejabberd可以轻松转换为集群以提高可靠性或性能
  • 带有内置的STUN/TURN服务器
  • 共享花名册组非常强大,但也需要适应。

缺点

  • 文档大多数是基于选项的,即描述了选项,类似于手册页面。很少有例子,甚至更少的描述选项如何交互,什么是最佳实践用法,或者实际上在虚拟主机环境中应该放置选项。
  • 如果你想扩展ejabberd,你需要能够掌握Erlang,这是一种非常强大的语言,但与大多数初学者学习的编程语言有相当多的差异。
  • 外部服务发现 (extdisco) 也没有(尚未)支持。

Prosody

优点

  • 由于Lua编程语言更易于使用,因此具有许多社区模块。
  • 作为一个纯社区项目,如果你想投入时间,你真的可以塑造这个项目。
  • 支持extdisco(需要较少的客户端配置)和mam:2(客户端支持更好)

缺点


2
看起来现在Prosody通过mod_pep_plus支持PEP的持久性了,详情请见https://issues.prosody.im/485 - FGiorlando

19

我推荐的XMPP服务器软件

最受欢迎:统计使用情况

  • 1) Ejabberd (61.6279%)
  • 2) Prosody (17.0543%)
  • 3) OpenFire (7.36434%)

最佳:多核使用

  • 1) Ejabberd和Openfire

  • 2) ---!

最优:内存使用

  • 1) Prosody
  • 2) Ejabberd
  • 3) Openfire

最佳:Web管理界面

  • 1) Openfire

  • 2) Ejabberd

  • 3) 无(默认)

最佳:编程语言

  • 1) Openfire(Java)和Prosody(Lua)

  • 2) Ejabberd(Erlang)


个人 / 树莓派 / ejabberd vs openfire vs prosody = (我的选择)Prosody


统计使用情况(俄语维基百科):

这是两个与Jabber(一种即时通讯协议)相关的链接:


18
将"Erlang (sic) is 2nd to Java and Lua as a language"翻译成中文为“作为一种编程语言,说Erlang排名仅次于Java和Lua相对主观和不公平。考虑到这正是Erlang创建的目的,它长期以来一直擅长这个领域。如果问题是关于一般编程或找工作等,也许Java是第一位,但如果我们谈论高度可扩展的通信/消息系统,我会说Erlang是首屈一指的(意译)(注意我的观点和你的一样主观)。" - Peter R

8
如果您在RaspberryPI上运行服务器,我会选择Prosody。它非常轻量级且使用Lua编写。
Openfire是Java编写的,需要大量资源才能运行,即使在小型环境中也是如此。
有许多极简主义的替代方案,但这取决于您所寻求的功能级别。

1
如果你是XMPP服务器设置/Lua(或兼容的编程语言)的新手,我建议你选择Openfire。Web管理控制台使设置非常简单。有多个插件可满足不同需求。但请注意,Openfire会为自己保留>1GB的内存。

不是完整的答案。 - Nadeem Taj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接