在rails或node.js上与faye的异步响应

时间:2013-07-29 19:57:08

标签: ruby-on-rails node.js faye

我有兴趣听到一些我必须解决的问题的想法。 我有一个带有条目列表的Web应用程序,我需要为每个条目调用不同的Web服务(例如twitter和youtube)以便“解析”一个项目。问题是Web服务往往很慢,一旦我有多个条目,我的响应时间就会很长。

所以我有几种方法。一个人会为每个条目做一个ajax调用,这意味着我最终会得到:entries * services(例如2)。

另一个想法是在轨道上使用faye以便向服务器发送消息。所以从理论上讲,我可以并行提出多个请求,并在收到来自Web服务的响应后立即将响应推送给客户端。

另一个突然出现的是节点js,但到目前为止我还没有使用node.js的经验

所以我期待着阅读任何想法和评论。

最佳, 菲尔

1 个答案:

答案 0 :(得分:1)

我在node.js上使用Faye作为一个非常相似的应用程序,到目前为止我真的很喜欢它。当在浏览器中注册用户请求时,它使用Faye向Web服务器发送消息。该消息产生一个动作,当它完成时,我向浏览器返回一条消息,让它知道发生了什么。

与此同时,在处理第一个操作时,浏览器保持活动状态,用户可以简单地继续请求操作,浏览器继续简单地将它们发送到服务器,然后服务器对它们进行操作。我可以在网络服务器上处理的同时请求数量基本上仅受我拥有的带宽和机器内存量的限制。

我使用AJAX做了一些原型工作,但发现它比我想要的要复杂一点,一旦我找到Faye并且设置和使用起来有多简单,我就迷上了。我还检查了一个名为socket.IO的库,该库可用于可以绑定到rails(http://liamkaufman.com/blog/2012/02/25/adding_real-time_to_rails_with_socket.IO_nodejs_and_backbonejs_with_demo/)的节点,但它似乎比仅使用带有rails的Faye更复杂。

给予Faye一个很好的认真,这是我最终选择的因为它的灵活性。我在一个node.js表达服务器上用了几天的时间对Faye进行了一些压力测试,它在我连接时以连续的方式保持连接,并以编程方式随机间隔断开多个浏览器窗口。简而言之,我没有理由担心它在这一点上的可靠性。

另外一件事,谷歌上有一个很好的社区,在那里使用Faye和一些很好的Q / A.此外,Faye的作者回答了我的一个问题,即直接在谷歌论坛上干净地关闭并与我进行来回交流,所以当你有疑问时,你会得到一些帮助。