与实时Web服务器选择混淆

时间:2014-12-16 11:29:52

标签: node.js erlang openfire ejabberd

我想开发像聊天和娱乐这样的实时网络应用程序。实时消息转换。我搜索了互联网,并对很少的技术感到困惑

erlang ejabberd nodejs openfire

现在我在java域中,但会毫不犹豫地学习新东西。那么,任何人都可以用一个非常简单的词语解释这些技术是什么,以及我需要用什么技术来实现我的目标?所有这些都做同样的事情吗?并且会向您提供新的技术建议。

2 个答案:

答案 0 :(得分:1)

这些完全不同:)

在最低级别:

Erlang/OTP是一项技术,可让您构建低延迟,容错系统。它包括Erlang编程语言,Erlang VM和OTP,它们是用于编写这些系统的模式,库和良好实践的集合。

nodejs是一个平台,可让您在服务器端编写JavaScript代码。在处理事件时,它会让你的生活变得更轻松,但是Erlang仍然可以更好地避免回调地狱中的演员和消息。

在更高级别你有xmpp:

xmpp是可扩展消息传递和状态协议。这非常适合实现Facebook聊天等聊天,但由于它是可扩展的,因此您可以将其用于任何类型的消息传递。

ejabberdxmpperlang的实施。还有一个名为MongooseIMejabberd分叉。这些将为您开发消息传递应用程序提供良好的开端。它们不仅实现了基本的xmpp,还实现了几个扩展(在xmpp社区中称为xep)。

openfire是基于xmpp的解决方案,所以它甚至更高级别。对于聊天和消息转换,这可能是过度的,但这取决于您的具体需求。

答案 1 :(得分:1)

完全是一个意见帖子:

  • Erlang:从头开始用yaws和Erlang这样做是最直接的方式(它甚至是“编程Erlang”第二版中的代码示例。)。
  • Ejabberd是着名的无证(对于大多数网络聊天服务来说都是过度杀戮),但它及其更好的文档/ saner表兄(MongooseIM)是健壮的并且已经写好了。
  • node.js是一个在单语前网络开发者上玩的宇宙笑话。
  • 我从未听说过openfire。

这些事情都不是很难学 - 但这是因为没有什么是不好的学习(虽然有些事情不值得花时间学习它们。)

我认为,基本问题是你的目标可能比你意识到的更广泛,至少在实现“开发基于网络的聊天和通信服务”这一目标的方法方面。那里有一百个Web服务器,每个都有自己的主动内容服务方式,每个服务器都有一百多个后端插件,还有一千多个聊天/会话/评论/ blather服务框架。任何给定的“技术堆栈”通常都会涉及十几种语言(考虑从Apache服务器用PHP编写的服务页面,该服务器代理Tomcat网络服务器以获取可插入内容,这些内容调用了一个小型方案聊天服务,该服务在Postgres中存储数据。 )。

在我看来,大多数网络堆栈的情况都是可笑的。这是Node.js理念的核心,实际上:选择大多数人都知道的语言并始终坚持下去。问题在于并非每种语言都适合于每项任务(或任何任务......)。但是,削减网络技术混乱的基本思路非常合理。

那就是说,我真诚地认为,最容易上手的地方是使用一种相对较小的语言,并在其周围建立一个小型的,知识渊博的社区,并专注于用该语言做所有事情。对于这个特殊的任务(实时网络通信),我更喜欢Erlang和Yaws,从头开始编写服务,直到它的一些元素显然需要一些预先编写的框架处理。 (但是,对于所有事情来说,这不是正确的工具选择,所以保持开放的心态并学会讨厌所有语言,至少一点 - 他们都很糟糕,只比其他语言少一些。)

相关问题