【问题标题】:Ruby On Rails 3, Pusher, Javascript, AJAX, Slow requestsRuby On Rails 3、Pusher、Javascript、AJAX、慢请求
【发布时间】:2012-10-01 21:02:26
【问题描述】:

我正在使用 Ruby on Rails 3 后端和 HTML AJAX 前端构建一个 facebook 聊天应用程序。 对于我使用Pusher 的套接字。一切正常,但有一个缺点,那就是性能。

对 Pusher API 的请求大约需要 300 毫秒,这太慢了。

触发Pusher API的代码是这样的:

Pusher['presence-chat'].trigger!( 'message_added', { message: message, name: session[:user][:fullname], username: session[:user][:username] } )

Pusher 类来自推送开发者制作的宝石。

我最近在他们的论坛上发帖,正在等待答案,但我想知道这里是否有人可以为我指出正确的方向以加快速度。

仅供参考:

运行应用的服务器在荷兰,我猜他们的服务器不在。

所以问题是,是什么导致简单的Net::HTTP(因为这是 Pusher-gem 正在使用的)这么慢?

提前致谢!

【问题讨论】:

    标签: javascript ruby ajax ruby-on-rails-3 pusher


    【解决方案1】:

    所以,我已从标准 WEBrick 服务器切换到 Thin(= Evented Server)。

    我将触发方法更新为异步触发方法:

    Pusher['presence-chat'].trigger_async( 'message_added', { message: message, name: session[:user][:fullname], username: session[:user][:username] } )
    

    请求现在只需 2 到 4 毫秒!

    感谢菲尔@Pusher!

    【讨论】:

      【解决方案2】:

      尝试使用一些后台作业推送到免费的 api

      sidekiq、延迟工作、resque 等有一些很棒的宝石

      还有 railscasts 可以帮助您轻松理解它

      http://railscasts.com/episodes?utf8=%E2%9C%93&search=background+job

      【讨论】:

      • 感谢您的回答!我最近将 DelayedJob 用于另一个应用程序,但我在他们的文档中读到的是工作人员每隔几秒钟检查一次数据库,所以我想知道这是否会比 300ms 更快?还是我在这里遗漏了什么?
      【解决方案3】:

      如何在前面使用 node.js 和 RoR 的套接字,使用此配置您将获得最大性能

      你可以参考这个 http://liamkaufman.com/blog/2012/02/25/adding_real-time_to_rails_with_socket.IO_nodejs_and_backbonejs_with_demo/

      【讨论】:

      • 我看到了这篇文章,我不得不说它看起来真的很棒,但我就是不知道如何让它工作.. 我不是很喜欢服务器等等,而且教程不是很详细..我会在下周末再试一次,不过感谢您的回答!
      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 2012-05-24
      • 1970-01-01
      相关资源
      最近更新 更多