使用EventMachine的Rails应用程序可以进行长轮询吗?

Ode*_*ded 5 ruby ruby-on-rails long-polling eventmachine

我正在Rails 3.1中编写一个简单的聊天室应用程序 - 用于学习目的.对于初学者我有所有需要的模型(消息,用户,房间等),事情很好.客户端每分钟轮询服务器(例如)并获得新消息(如果有).

我想将简单轮询更改为长轮询,并且无法确定是否可以在同一个应用程序中完成此操作,或者我是否必须为长轮询创建其他推送服务器.

我阅读了很多关于EventMachine的内容,并将我的rails应用程序更改为用户,因为我想将EventMachine用于事件驱动的机制.我认为EventMachine频道会派上用场.客户端将连接并等待聊天室中的消息,并且仅当一个人被发送到房间时它才会收到消息.

我无法弄清楚的是如何在所有客户端连接之间共享EventMachine :: Channel实例.这种方法是否可行,或者我是否采取了错误的方式?

如果可能的话,我想要一个可以作为Heroku上托管的单个rails应用程序运行的解决方案.

Aug*_*sto 0

扩展我在评论中提到的内容,请查看这篇博客文章,其中解释了如何使用 EM 创建基于文本的聊天应用程序,并使用 AMQP 将消息广播给其他用户。

我认为你可以做同样的事情或者使用一些内存队列来共享消息,这绝对应该在heroku上工作,因为你不依赖于外部服务,例如RabbitMQ。这里有关于不同队列框架的很好的讨论:ActiveMQ 或 RabbitMQ 或 ZeroMQ 或