0

Facebookやstackoverflowのように、ユーザーが投稿できるレールアプリを開発しています。新しい投稿が追加されたときにユーザーに知らせるアラート システムを実装したいと考えています (ここのスタックオーバーフローのように)。

これからherokuにデプロイします。これは、heroku が websocket をサポートしていないという事実など、いくつかの問題を引き起こします。Websocket のサポートが必要な場合は、Pusher または Pubnub (高価なサービス) を介して料金を支払う必要があります。ただし、そのようなセットアップが必要かどうかはわかりません。私は長いポーリングで逃げることができるかもしれません(自己呼び出しsetTimeoutを使用して頻繁にajaxリクエストを介して)。

私の質問は、どの時点で、Ajax 間隔呼び出しだけで Pubnub/Pusher などのプッシュ サービスを使用する必要があるかということです。または、さらに良いことに、どのように ajax 間隔呼び出し (おそらく 30 秒または 1 分ごとに呼び出す) を回避できますか? (とにかく物乞いで ajax を使用し、トラフィックが殺到した場合はサービスにアップグレードする方が賢明ですか?)

私の更新は必ずしもリアルタイムである必要はありませんが、できるだけ早くしたいと考えています。

4

2 に答える 2

1

Rails on Heroku を使用した PubNub ライブ イベント通知

PubNub を使い始めて、Push アップデート (Stackoverflow など) を Web アプリケーションに組み込む簡単な方法について尋ねています。Herokuを使用し、Ruby 経由で更新イベントを送信します。これは、PubNub で簡単に実現できます。まず、 PubNub Ruby Gemにアクセスする必要があります。

gem install pubnub

次に、PubNub JavaScript を介して Web アプリの更新を受信する必要があります。添付するいくつかのリンクを使用して、開始点があります。

続行する前に、次のリンクは、デモを参照したり、必要なものに変形したりするための出発点にすぎないことに注意してください。ソース コード ( Stackoverflow リアルタイム更新の回答にある) をコピーし、参照リンクを読んで開始方法を確認してください。また、詳細なヘルプが必要な場合は、いつでも Twitter でhttp://twitter.com/pubnub @PubNub に連絡できます。

  1. Stackoverflow Link - PubNub を使用してリアルタイムの更新をユーザーの Web ブラウザに送信したい
  2. 一般的なブログ - Facebook のような通知とプライベート コンテンツ用の PubNub のセットアップ

これらのリンクは、PubNub を介してカスタム メッセージでユーザーに通知する Facebook のようなウィンドウ ボックスの例を提供します。携帯電話またはブラウザでユーザーに更新を送信できます。これにより、ユーザーに通知が表示されます。任意の通知あなた。次に、セキュリティを追加する場合は、PubNub はシングル ユーザー チャネルのセキュリティのみを提供することに注意してください。グループ チャンネルは基本的にパブリック ブロードキャストであり、現時点ではブロードキャスト モードでデータをロックすることはできません。

于 2012-09-04T23:53:26.557 に答える
1

私の質問は、どの時点で、Ajax 間隔呼び出しだけで Pubnub/Pusher などのプッシュ サービスを使用する必要があるかということです。または、さらに良いことに、どのように ajax 間隔呼び出し (おそらく 30 秒または 1 分ごとに呼び出す) を回避できますか? (とにかく物乞いで ajax を使用し、トラフィックが殺到した場合はサービスにアップグレードする方が賢明ですか?)

Heroku のようなサービスを使用することは、Web ホスティング環境の負荷を軽減していることを意味します。これは、サービスの人気が高まるにつれて、スケーリングが処理されることを意味します。何らかの形式のポーリングを使用する場合は、ポーリング リクエストによってより多くのリソースが消費されるため、サービスの Heroku 部分をより早くスケーリングする必要があります。

ポーリングは効率が大幅に低下する可能性がありますが、ユーザーが更新を表示する頻度に大きく依存します。更新が適度に頻繁に行われ、ポーリング リクエストが実際にデータを返し、リアルタイムが問題にならない場合は、ポーリングが適切な解決策である可能性があります。ただし、通知がすぐに届かないことを意味します。

アプリのリアルタイム インフラストラクチャ部分にホステッド サービスを使用する必要があるかどうかは、次の要素に大きく依存します。

  1. 通知のリアルタイム性が重要であり、WebSocket を使用したい場合、最善の解決策は、ホストされたサービスを使用することです。
  2. 発生するコストを検討する際には、ユーザーの数と更新の頻度を考慮する必要があります。前述したように、これはアプリに Heroku Dyno を追加する必要がある時期に影響します。アプリの予想されるリソース使用量に基づいていくつかの合計を計算すると、ポーリングを使用してより多くの Dyno に料金を支払うか、リアルタイム インフラストラクチャをホストされたサービスにオフロードする方が費用効率が高いかどうか、大まかなアイデアを得ることができる場合があります。

私は Pusher で働いているので、リアルタイム インフラストラクチャを WebSocket に重点を置いたサービスにオフロードすることの利点は高いと確信しています。長所と短所を比較検討する際には、強力なコミュニティ、優れた開発ツール、およびドキュメントの利点も考慮する必要があります。コストが問題になる場合は、Pusher のサポートに連絡して、割引や取引の可能性について質問するのがよいでしょう。

于 2012-09-09T10:37:15.613 に答える