Ruby on Rails 3 - 公共在线聊天

6

我希望使用rails 3创建一个公共的实时聊天应用程序。

我在rails 2上找到了一些示例。有人可以提供一个好的示例/教程来开发使用rails 3的实时聊天应用程序吗?


你想要指针还是教程? - Devin M
3个回答

7
我在尝试在我的Rails 3应用程序中实现公共和私有聊天系统时遇到了几个障碍。我查看了faye,juggernaut,node.js等内容。最终,在尝试了几种方法后,我能够实现一个很好的系统:
1)首先,我按照Devin M提到的Railscast 260中的视频指南来进行faye消息传递。我能够快速设置一个Rails应用程序,将消息保存并将这些新消息推送到所有客户端的聊天服务器上。最大的问题是安全性。我无法控制对聊天服务器的访问。
2)这使我使用了Ryan Bates的Private Pub Gem,在Railscast 316中介绍了如何通过验证客户端的签名来保护您的faye服务器。这对于保护服务器有效,但我在尝试验证实际用户和添加“在线用户”功能时遇到了问题。我尝试了一种私有发布hack来传递用户详细信息进行身份验证,但无法流畅地运行事情。
3)最终,我决定将聊天服务器移动到pusher - 这是一个实时应用程序的托管API。我按照如何在Rails中创建实时调查的教程来了解如何设置。虽然这不是直接关于设置聊天系统的内容,但是这个教程以及我已经从上面的Railscast中设置的内容(和易于阅读的pusher文档),使我能够快速设置一个安全的Rails 3聊天应用程序 - 包括身份验证,“在线用户”,状态消息等。最好的部分是...我不必处理聊天服务器的管理。
希望这能帮助正在进行与我相同过程的人。

Pusher是否也保存(归档)已发送的消息,以便在用户登录新设备时可以检索先前的消息。例如,我可以查询并检索特定用户或组过去两天、一周或一个月的消息。 - Muhammad Nabeel Arif
1
@MuhammadNabeelArif - 我不认为他们当前的API提供了那个功能(但我可能错了)。为了实现相同的结果,我只是将消息保存在数据库中,然后在2天后删除旧消息。 - yellowaj
请问您能详细说明一下“在我的认证系统中尝试验证实际用户时遇到的问题”吗?这是什么类型的认证系统,它是否重要或者任何认证系统都存在问题?我想了解如何将LDAP(Active Directory)集成到其中。 - dimir

6
您可以通过观看 Railscast 260 来了解基础知识,我假设您已经具备 Rails/Ruby 开发背景和一定的 jQuery/JavaScript 知识。该视频教程有一个文本版本源代码,同时也可以在GitHub上找到。请注意保留 HTML 格式。

3

我建议你先查看Ilya Grigorik的em-synchony示例,并查看Hector私人聊天服务器宝石的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接