Rails 的即时通讯实现?

Posted

技术标签:

【中文标题】Rails 的即时通讯实现?【英文标题】:instant messenger implementation for rails? 【发布时间】:2012-03-12 02:42:46 【问题描述】:

我已经搜索了一段时间,研究了几种技术来为 ruby​​ on rails 应用程序构建一个简单的即时消息系统。这似乎很复杂,因为我根本没有找到任何跨浏览器或任何 1-1 概念证明的实现。

调查过:

xmpp客户端(github上有Candy只支持群聊) xmpp 服务器和 Rails(很多麻烦没有好的集成) Juggernaut(编号 1-1,由于使用了 Web 套接字,因此 Internet Explorer 不支持) ryan bates 的私人酒吧(似乎能够做到这一点,但作为 ruby​​ 新手,几乎没有这方面的文档无法理解)

谁能给我推荐一个 Rails 即时通讯工具:

即跨浏览器 有很好的文档,实现示例 Instant Messenger,用户 A 与用户 B 对话,用户 B 与用户 A 对话

我真的不知道我将如何实现这个,任何人都可以给我建议如何解决这个问题?谢谢

【问题讨论】:

【参考方案1】:

正如埃里克所说,没有。消息传递是一件非常困难的事情。

现在我正在使用Pubnub,这是一个外部服务。没有关于 Rails 集成的很好的文档,所以你只能自己尝试。

在更好的记录方面,有 Faye,但这是一个内部进程,需要运行两个实例(一个用于响应 Faye 请求,一个用于运行您的应用程序)。在 Heroku 上做这件事有点棘手(而且成本更高),所以我只坚持使用 Pubnub。

关于 Faye 文档,请查看此 Railscast,出于隐私考虑,请查看 Private Pub。

编辑:如果您认为 Private Pub 难以集成.. 好吧,不是刻薄,但也许您应该在深入研究这个问题之前尝试更多地了解 Rails 和 javascript,因为这不是一件容易的事(尽管看起来应该如此)

编辑 2: 另外,对于 faye,this tutorial might help you out.

对于这类事情,您最好使用 Node.js。

【讨论】:

Privatepub 本身并不难设置,问题在于在频道中管理,基本上有一个 2 人的房间名称并且订阅他们可以工作,也许我应该更多地研究它。 嗨@varatis 谢谢你的回答,它对我有很大帮助:) 只有一个问题:你是什么意思需要两个实例来运行?我对服务器设置没有太多经验谢谢 @medBo 基本上,想想你什么时候运行rails server。当您正常执行此操作时,您的计算机将一个执行线程完全放弃给该服务器 - 当该进程在前台运行时,您无法在该终端窗口中启动任何其他内容。 Heroku 同样不允许你启动另一个进程来运行像 Faye 这样的东西,或者做后台作业,除非你付费。 谢谢@varatis,我现在可以理解了:)如果我想要额外的午餐,我应该付多少钱?贵吗? 大约 15 美元/月。查看heroku.com/pricing。与 Linode 或 EC2 等其他服务相比,它并不昂贵。此外,它还为您省去了所有其他设置费用和诸如此类的麻烦。取决于你的时间/金钱权衡是什么。【参考方案2】:

正在进行的工作: 完整的 Facebook 克隆

https://github.com/rubytastic/im

请贡献代码,待修复但仍然古怪!

【讨论】:

以上是关于Rails 的即时通讯实现?的主要内容,如果未能解决你的问题,请参考以下文章

腾讯im即时通讯和即构im即时通讯那个比较好?

小程序如何集成即构IM实现即时通讯发消息聊天

IM即时通讯实现的原理

IM即时通讯实现的原理

Android 使用WebSocket实现即时通讯功能,聊天功能

即时通讯(IM-instant messager)