在网站中设计聊天客户端。我应该使用XMPP吗?

时间:2012-01-11 07:15:48

标签: ruby-on-rails xmpp chat

我打算在rails上使用ruby设计一个网站。我想要实现的功能之一是聊天功能。用户可以与网站的其他用户/成员聊天。我应该使用什么或换句话说开始学习以设计类似的东西?

XMPP是答案吗?如果是这样的话,我会很高兴如果有人可以描述一下去哪里和/或建议一些书籍。谢谢!

我说XMPP因为我知道Facebook使用它,我打算创建类似的东西

2 个答案:

答案 0 :(得分:3)

协议可能会成为一个非常繁琐的主题,如果没有先前的经验,自己实施一个运行良好的协议可能会非常艰巨。特别是如果它与几方之间的(近)实时通信有关。如果这应该扩展到任何大量的访问者,正确实现这一点可能非常困难。

XMPP是一个已经很好建立的协议,已被淘汰并且已经有许多稳定的实现。因此,在使用它时,您不必再担心设计或实现协议。出于这个原因,我真的推荐它。这也是一个相当容易理解的协议,即使你必须花一些时间在一开始就阅读基础知识。对于文档,请远远超过http://xmpp.org

设置XMPP服务器可在几分钟内完成,具体取决于您选择的操作系统和服务器。需要注意的是,如果你想自定义服务器,你必须在某种程度上了解它的内部,这可能需要或者可能不需要一些时间。

最重要的是:选择XMPP和现有的XMPP库和服务器,您可以免费获得90%的功能,并可以专注于实现您的客户端。问题是,您需要花多少时间深入研究XMPP和服务器的细节,这需要花费的时间比滚动自己的协议更长,并且您自己的协议是否适合您的长期需求以及XMPP?

答案 1 :(得分:1)

您总是要考虑在实施此项目时需要花多少钱。 如果你使用XMPP,你将能够运行XMPP标准聊天服务器(在Rails之外),并且应该能够使用带有XMPP到HTTP桥的JavaScript客户端。

快速Google搜索提出的项目是Strophe

但我认为,如果XMPP真的适合您的需求,并且您真的想要为聊天解决所有麻烦,那么您应该认真思考。

实现自己也不是直截了当的,尤其是当你自己编写所有长轮询和信令时。 但这并非不可能,应该在几天内给你一个简单的工作解决方案。

在Rails中自己进行聊天会要求您使用备用数据库,因为Rails无法在请求之间存储内存中的数据,并且ActiveRecord中的持久聊天数据似乎不是一个非常可扩展的好主意。

使用XMPP显然可以让您的用户使用iChat,Jabber或任何其他XMPP客户端连接到您的聊天服务。