【问题标题】:Confused in with real time web server choice [closed]对实时 Web 服务器选择感到困惑 [关闭]
【发布时间】:2015-02-14 16:53:24
【问题描述】:

我想开发实时网络应用程序,例如聊天和实时消息转换。我搜索了互联网,对一些技术感到困惑

erlangejabberdnodejsopenfire

现在我在 java 领域,但会毫不犹豫地学习新事物。那么任何人都可以用非常简单的话解释这些技术是什么以及我需要什么技术来实现我的目标?所有这些都做同样的事情吗?您的新技术建议将被采纳。

【问题讨论】:

标签: node.js erlang openfire ejabberd


【解决方案1】:

完全是一篇评论文章:

  • Erlang:使用 yaws 和 Erlang 从头开始​​执行此操作是最直接的方法(它甚至是“Programming Erlang”第 2 版中的代码示例)。
  • 众所周知,Ejabberd 没有文档记录(对于大多数网络聊天服务来说,这太过分了),但它和它的文档更完善/更健全的表亲 (MongooseIM) 是健壮的并且已经编写好了。
  • node.js 是对单语前前端 Web 开发人员开的一个宇宙笑话。
  • 我从没听说过 openfire。

这些东西都不好学——但那是因为没有什么东西是不好学的(尽管有些东西不值得你花时间去学习)。

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

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

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

【讨论】:

    【解决方案2】:

    这些是完全不同的东西:)

    在你拥有的最低级别:

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

    nodejs 是一个平台,可让您在服务器端编写 JavaScript。在处理事件时,它让你的生活更轻松一些,但 Erlang 仍然可以更好地将你从演员和他们之间的消息的回调地狱中拯救出来。

    在更高级别你有 xmpp:

    xmpp 是可扩展消息传递和存在协议。这对于实现像 facebook 聊天这样的聊天非常有用,但是因为它是可扩展的,所以您可以将它用于任何类型的消息传递。

    ejabberdxmpperlang 中的实现。还有ejabberd 的分支,称为MongooseIM。这些将为您开发消息传递应用程序提供良好的开端。他们不仅实现了基本的 xmpp,还实现了一些扩展(在 xmpp 社区中称为xeps)。

    openfire 是基于 xmpp 的解决方案,因此它的级别更高。对于聊天和消息转换,这可能有点过头了,但这取决于您的具体需求。

    【讨论】:

    • 所以从你的观点来看,我认为Erlang 将是一个很好的开始,因为对我来说一切都是新的。正确的 ?因此,如果想开发像 FB Gmail 这样的聊天应用程序,技术上必须选择Erlang ejabbered 两者还是两者中的任何一个?
    • 在我看来:Erlang + MongooseIM。
    • 都可以免费用于商业用途吗?
    • 是的,它们可免费用于商业用途。万一遇到障碍,也有支持。
    • ejabberedErlang + MongooseIM ?
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多