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

Posted

技术标签:

【中文标题】在网站中设计一个聊天客户端。我应该使用 XMPP 吗?【英文标题】:Design a chat client in a website. Shoud I use XMPP? 【发布时间】:2012-01-11 07:15:47 【问题描述】:

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

XMPP 是答案吗?如果是这样,我会很高兴有人能描述一下从那里去哪里和/或推荐一些书。谢谢!

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

【问题讨论】:

【参考方案1】:

协议可能会成为一个非常棘手的话题,如果没有经验,自己实现一个运行良好的协议可能会非常令人生畏。特别是如果它与多方之间的(近)实时通信有关。如果这应该扩展到任何大量的访问者,那么正确实施它可能会非常困难。

XMPP 是一个已经很成熟的协议,它已经被动摇并且已经有许多稳定的实现。因此在使用时,您无需再为协议的设计或实现操心。出于这个原因,我真的很推荐它。它也是一个相当容易理解的协议,即使您必须在开始时花一些时间阅读基础知识。比http://xmpp.org 更远的地方寻找文档。

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

底线是:选择 XMPP 和现有的 XMPP 库和服务器,您可以免费获得 90% 的功能,并且可以专注于实现您的客户端。问题是,您需要深入了解 XMPP 和服务器的细节,这会比滚动您自己的协议花费更长的时间吗?从长远来看,您自己的协议会像 XMPP 一样满足您的需求吗?

【讨论】:

谢谢你们。这对我帮助很大。我仍在研究,但这些建议非常有用:)【参考方案2】:

您始终必须考虑要花多少钱来实现这一点。 如果您使用 XMPP,您将能够运行 XMPP 标准聊天服务器(在 Rails 之外),并且应该能够使用带有 XMPP 到 HTTP 桥的 javascript 客户端。

一个快速谷歌搜索提出的项目是Strophe。

但我认为,您应该仔细考虑 XMPP 是否真的适合您的需求,以及您是否真的想为聊天解决所有这些麻烦。

实现自己的也并不简单,尤其是当您自己编写所有长轮询和信号时。 但这并非不可能,并且应该在几天内为您提供一个简单的工作解决方案。

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

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

【讨论】:

谢谢你们。这对我帮助很大。我仍在研究,但这些建议非常有用:)

以上是关于在网站中设计一个聊天客户端。我应该使用 XMPP 吗?的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 聊天发送/接收消息同步

如何将 JavaScript XMPP 客户端(JSXC)配置到网站?

如何使用 XMPP 和 GCM 在 Android 中制作聊天应用程序

是否有可以跨页面刷新保持聊天的 xmpp 客户端?

XMPP:允许客户端通过代理进行通信?

在 ASP.Net 中设计网站 - 用户登录设计和注意事项