【问题标题】:XMPP server : ejabberd vs openfire vs prosodyXMPP 服务器:ejabberd vs openfire vs prosody
【发布时间】:2016-02-09 08:58:22
【问题描述】:

我正在尝试弄清楚 XMPP 的工作原理(一般是协议的初学者)并且我想设置一个服务器。

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

  • ejabberd
  • 开火
  • 韵律

我查看了一些网站和the wikipedia,但我看不出它们的优缺点。

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

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

【问题讨论】:

  • Ease-of-modern-setup 不包含在以下答案中:有一个简单的教程,介绍如何在 Raspberry Pi 上设置 ejabberd+Nextcloud,并具有 100%“现代 XMPP 合规性”@987654322 @

标签: server xmpp


【解决方案1】:

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

【讨论】:

  • 不是一个完整的答案。
【解决方案2】:

我曾参与针对ejabberdProsody 测试开源XMPP Web 客户端(JSXC),注意到以下差异。请注意,我在 ejabberd 上做得更多,所以自然会有更多的吹毛求疵,也有更多的赞美。

埃贾伯德

优点

  • 已实施的机制通常坚如磐石,这可能是因为有一家公司支持它,提供需要这种质量的服务。
  • 使用ejabberdctl 和管理网络界面,可以在进程运行时配置许多东西。即使您需要大量修改配置文件,重新加载它们也不会中断。
  • ejabberd 可以很容易地变成一个集群以提高可靠性或性能
  • 内置STUN/TURN服务器
  • 共享名册组非常强大,但也需要习惯。

缺点

  • 文档主要是基于选项的,即描述选项,类似于手册页。关于选项如何交互、最佳实践用法或实际放置选项的示例很少,甚至描述更少,尤其是在虚拟主机环境中。
  • 如果您想扩展 ejabberd,您需要能够掌握Erlang,这是一种非常强大的语言,但与大多数初学者学习的编程语言有不少差异。
  • External Service Discovery (extdisco) 也不(尚)受支持。

韵律

优点

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

缺点

  • 一些模块(对我来说,最值得注意的是external authentication mechanism) are unreliable
  • 必须重新启动以进行更多配置更新,即客户端将断开连接并必须重新连接,通常会导致已离线/上线通知用户。 [更新:我确实知道mod_reload_modules,它可以避免一些或这些重启。谢谢,博士!]
  • No persistence 用于 PEP/PubSub(个人事件协议;发布-订阅)数据。这使得它无法用于书签(例如,多用户聊天)和基于 XMPP 的社交网络,例如 Movim

【讨论】:

  • 看起来 prosody 现在支持使用 mod_pep_plus 在 PEP 上持久化,请参阅 issues.prosody.im/485
【解决方案3】:

我的顶级 XMPP 服务器软件

顶部:统计使用

  • 1) 埃贾伯德 (61.6279%)
  • 2) 韵律 (17.0543%)
  • 3) OpenFire (7.36434%)

顶部:多核使用

  • 1) Ejabberd 和 Openfire

  • 2) --- !

顶部:内存使用情况

  • 1) 韵律
  • 2) 埃贾伯德
  • 3) 开火

顶部:网络管理员

  • 1) 开火

  • 2) 埃贾伯德

  • 3) 否(默认)

顶部:编程语言

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

  • 2) Ejabberd (Erlang)


Personnal / Raspberry pi / ejabberd vs openfire vs prosody =(“我的选择)Prosody”


统计使用(俄语维基):

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 是首屈一指的(知道我的意见和你的一样主观)
【解决方案4】:

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

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

那里有很多简约的替代品,但这完全取决于您所寻求的功能级别。

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 2015-11-05
    • 2010-12-11
    • 2013-10-07
    • 1970-01-01
    • 2019-01-29
    • 2018-10-08
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多