我想开发像聊天和娱乐这样的实时网络应用程序。实时消息转换。我搜索了互联网,并对很少的技术感到困惑
erlang
ejabberd
nodejs
openfire
现在我在java域中,但会毫不犹豫地学习新东西。那么,任何人都可以用一个非常简单的词语解释这些技术是什么,以及我需要用什么技术来实现我的目标?所有这些都做同样的事情吗?并且会向您提供新的技术建议。
答案 0 :(得分:1)
这些完全不同:)
在最低级别:
Erlang/OTP
是一项技术,可让您构建低延迟,容错系统。它包括Erlang编程语言,Erlang VM和OTP,它们是用于编写这些系统的模式,库和良好实践的集合。
nodejs
是一个平台,可让您在服务器端编写JavaScript代码。在处理事件时,它会让你的生活变得更轻松,但是Erlang仍然可以更好地避免回调地狱中的演员和消息。
在更高级别你有xmpp:
xmpp
是可扩展消息传递和状态协议。这非常适合实现Facebook聊天等聊天,但由于它是可扩展的,因此您可以将其用于任何类型的消息传递。
ejabberd
是xmpp
中erlang
的实施。还有一个名为MongooseIM
的ejabberd
分叉。这些将为您开发消息传递应用程序提供良好的开端。它们不仅实现了基本的xmpp,还实现了几个扩展(在xmpp社区中称为xep
)。
openfire
是基于xmpp的解决方案,所以它甚至更高级别。对于聊天和消息转换,这可能是过度的,但这取决于您的具体需求。
答案 1 :(得分:1)
完全是一个意见帖子:
这些事情都不是很难学 - 但这是因为没有什么是不好的学习(虽然有些事情不值得花时间学习它们。)
我认为,基本问题是你的目标可能比你意识到的更广泛,至少在实现“开发基于网络的聊天和通信服务”这一目标的方法方面。那里有一百个Web服务器,每个都有自己的主动内容服务方式,每个服务器都有一百多个后端插件,还有一千多个聊天/会话/评论/ blather服务框架。任何给定的“技术堆栈”通常都会涉及十几种语言(考虑从Apache服务器用PHP编写的服务页面,该服务器代理Tomcat网络服务器以获取可插入内容,这些内容调用了一个小型方案聊天服务,该服务在Postgres中存储数据。 )。
在我看来,大多数网络堆栈的情况都是可笑的。这是Node.js理念的核心,实际上:选择大多数人都知道的语言并始终坚持下去。问题在于并非每种语言都适合于每项任务(或任何任务......)。但是,削减网络技术混乱的基本思路非常合理。
那就是说,我真诚地认为,最容易上手的地方是使用一种相对较小的语言,并在其周围建立一个小型的,知识渊博的社区,并专注于用该语言做所有事情。对于这个特殊的任务(实时网络通信),我更喜欢Erlang和Yaws,从头开始编写服务,直到它的一些元素显然需要一些预先编写的框架处理。 (但是,对于所有事情来说,这不是正确的工具选择,所以保持开放的心态并学会讨厌所有语言,至少一点 - 他们都很糟糕,只比其他语言少一些。)