XMPP服务器:ejabberd vs openfire vs韵律

Dan*_*iel 18 xmpp server

我正在试图弄清楚XMPP是如何工作的(一般是协议中的初学者),我想设置一个服务器.

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

  • ejabberd
  • 开火
  • 韵律学

我检查了一些网站和维基百科,但我看不出有关所有这些的利弊.

我在哪里可以找到一些可以理解的信息?

PS:如果上下文在某种程度上很重要,我想在我的个人树莓派上设置我的服务器(所以处理能力不是那么大),我的最终目标是使用谷歌云消息传递将XMPP用于一个小的Android应用程序

小智 11

我的Top XMPP服务器软件

上:统计使用

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

顶部:多核使用

  • 1)Ejabberd和Openfire

  • 2)---!

顶部:内存使用情况

  • 1)韵律
  • 2)Ejabberd
  • 3)Openfire

顶部:网络管理员

  • 1)Openfire

  • 2)Ejabberd

  • 3)否(默认)

顶部:编程语言

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

  • 2)Ejabberd(Erlang)


Personnal/Raspberry pi/ejabberd vs openfire vs韵律=(我的选择)韵律


统计用途(俄语维基):

http://jabberworld.info/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D1%80%D0%B0%D0%B1%D0%BE%D1 %82%D0%B0%D1%8E%D1%89%D0%B8%D1%85_%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D1%87%D0%BD %D1%8B%D1%85_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2_Jabber

评论(俄语维基):

http://wiki.404.city/%D0%94%D0%B6%D0%B0%D0%B1%D0%B1%D0%B5%D1%80

  • 说Erland(原文如此)是Java和Lua作为语言的第二名,这是非常主观和不公平的.考虑到这只是*正是*Erlang创建的类型,并且长期以来一直表现得非常好.如果问题是关于一般编程或找工作等等,那么Java可能是#1,但如果我们谈论大规模可扩展的通信/消息传递系统,我会说Erlang是首屈一指的(意识到我的观点和你的一样主观) ) (12认同)

Mar*_*gel 11

已参与测试一个开源的XMPP网络客户端(JSXC反对)ejabberd和韵律,我注意到以下区别.请注意我已经用ejabberd做了更多,所以自然会有更多的挑剔,但也更赞.

ejabberd

优点

  • 已经实施的机制通常是坚如磐石的,可能是由于公司支持它,提供需要这种质量的服务.
  • 使用ejabberdctl和管理Web界面,可以在进程运行时配置许多内容.即使你需要大量触摸配置文件,重新加载它们也是正确的,没有中断.
  • ejabberd很容易变成集群,以实现可靠性或性能
  • 配有内置的STUN/TURN服务器
  • 共享名册组非常强大,但也需要习惯.

缺点

  • 该文件主要是选择为基础的,即选项的介绍,类似于手册页.关于选项如何交互,最佳实践用法,或实际放置选项的位置,特别是在虚拟主机环境中,几乎没有示例,甚至更少的描述.
  • 如果你想扩展 ejabberd,你需要能够把握二郎,一个非常强大的语言,但在编程语言的大多数初学者学习很多的不同.
  • 外部服务发现(extdisco)也不受支持.

韵律学

优点

  • 由于Lua编程语言更容易访问,因此有很多社区模块.
  • 作为一个纯粹的社区项目,如果你想投入时间,你真的可以塑造项目.
  • 是否支持 extdisco(需要较少的客户端配置)和mam:2(客户端更好地支持)

缺点

  • 一些模块(对我来说,最值得注意的是外部认证机制)是不可靠的.
  • 必须重新启动以进行更多配置更新,即客户端将断开连接并且必须重新连接,通常会导致已脱机/向用户发送在线通知.[更新:我确实知道mod_reload_modules,哪些可以避免一些或这些重启.谢谢,drs!]
  • PEP/PubSub(个人事件协议;发布 - 订阅)数据没有持久性.这使得它无法用于书签(例如,多用户聊天)和基于XMPP的社交网络,例如Movim

  • 看起来韵律现在支持使用 mod_pep_plus 在 PEP 上持久化,请参阅 https://issues.prosody.im/485 (2认同)

kin*_*aid 8

如果您在 RaspberryPI 上运行您的服务器,我会选择 Prosody。它非常轻量级,是用 Lua 编写的。

Openfire 是 java 并且需要大量资源才能运行,即使在小型环境中也是如此。

有很多简约的替代品,但这一切都取决于您正在寻求的功能级别。