0

Ruby on Rails 3 バックエンドと HTML AJAX フロントエンドを使用して Facebook チャット アプリを構築しています。ソケットにはPusherを使用します。すべてが機能しますが、1 つの欠点があり、それはパフォーマンスです。

Pusher API へのリクエストには約 300 ミリ秒かかりますが、これは遅すぎます。

プッシャー API をトリガーするコードは次のとおりです。

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

Pusherクラスは、プッシャー開発者によって作成された宝石からのものです。

私は最近彼らのフォーラムに投稿し、答えを待っていますが、ここの誰かがそれをスピードアップするための正しい方向に私を向けることができるかどうか知りたいです.

参考までに:

アプリが実行されているサーバーはオランダにありますが、私の推測では、彼らのサーバーはそうではありません。

問題は、単純なNet::HTTPもの (Pusher-gem が使用しているため) がこれほど遅くなる原因は何でしょうか?

前もって感謝します!

4

3 に答える 3

1

そこで、標準の WEBrick サーバーから Thin (= Evented Server) に切り替えました。

そして、トリガー メソッドを非同期トリガー メソッドに更新しました。

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

リクエストはわずか 2 ~ 4 ミリ秒で完了します。

フィル@プッシャーに感謝!

于 2012-10-11T14:54:54.640 に答える
0

フロントでnode.jsとRoRを使用するソケットはどうですか?この構成で最大のパフォーマンスが得られます

これを参照できます http://liamkaufman.com/blog/2012/02/25/adding_real-time_to_rails_with_socket.IO_nodejs_and_backbonejs_with_demo/

于 2012-10-11T10:00:02.863 に答える
0

いくつかのバックグラウンド ジョブを使用して、バックグラウンドで API にプッシュしてみてください

sidekiq、delaayed job、resque など、素晴らしい逸品がいくつかあります

また、簡単に理解するのに役立つRailscastもあります

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

于 2012-10-11T08:51:39.617 に答える