2012-10-11 42 views
0

我正在構建一個帶有Ruby on Rails 3後端和HTML AJAX前端的Facebook聊天應用程序。 對於我使用的套接字Pusher。一切正常,但有一個缺點,那就是性能。Ruby On Rails 3,Pusher,Javascript,AJAX,緩慢的請求

對Pusher API的請求大約需要300ms,這太慢了。

用於觸發推動器API的代碼是這樣的:

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

Pusher類是從由推動器 - 開發者製成的寶石。

我最近發佈在他們的論壇上,並等待答案,但我想知道這裏的某個人是否可以指引我加速正確的方向。

僅供參考:

應用程序正在運行的服務器是在荷蘭,我的猜測是,他們的服務器是沒有的。

所以問題是,什麼可能導致一個簡單的Net::HTTP(因爲這就是Pusher-gem使用的)是這麼慢?

在此先感謝!

回答

1

所以,我從我的標準的WEBrick服務器切換到薄(=事件觸發服務器)。

我更新了我的觸發方式,以異步觸發方式:

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

,並要求現在就僅有2 - 4毫秒!

感謝Phil @ Pusher!

0

嘗試使用一些後臺作業

推到API中bacground

有一些swesome寶石出sidekiq,delaayed工作,resque多

也有railscasts這將幫助您輕鬆瞭解它

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

+0

感謝您的回答!我最近在另一個應用程序中使用了DelayedJob,但是我在他們的文檔中讀到的是工作人員每隔幾秒鐘檢查一次數據庫,所以我想知道這是否會比'300ms'更快?或者我在這裏錯過了什麼? –

0

如何如何使用Node.js和回報率的前插座,你會得到最大的性能,這種配置

你可以參考這個 http://liamkaufman.com/blog/2012/02/25/adding_real-time_to_rails_with_socket.IO_nodejs_and_backbonejs_with_demo/

+0

我已經圍繞這篇文章發表了看法,但我不得不說它看起來非常棒,但我無法弄清楚如何讓它正常工作..我並沒有真正意識到服務器和所有的東西,而且教程也不是很詳細..我會在即將到來的週末再次出手,謝謝你的回答! –