RoRで記述されたアプリの1つにリアルタイムのプッシュ通知を実装したいと思いました。 nodejs、nowjs、express、またはsocketioの経験はありません。
リアルタイムプッシュ通知システムを実装する最も簡単な方法は何でしょうか?
http://railscasts.com/episodes/260-messaging-with-faye
私の個人的な見解は、アーキテクチャ的に最も広く普及しているソリューションの1つはロングポールまたはコメットですが、開発の観点からは、それは物事を行う方法の一部であるという意味で最も簡単です。単に、バックエンドが負担しなければならない負荷のために、キュー/ pubsubシステムにははるかに多くのものが存在します。
個人的には、ActiveMQサーバーや他のメッセージキューソリューションをプラグインすることも検討します。クライアントごとに排出できるユーザーごとのキューの概念があり、排出するJS APIがある限り、おそらくRuby/REST PushへのAPIであり、動作します。
繰り返しますが、これは私の個人的な見解です。そうですが、ロングポーリングはオプション(またはsocket.IOはオプション)になる可能性がありますが、主要な部分であっても、方程式の一部にすぎません。
最も簡単の方法は、ロングポールを使用することです。ただし、これはプッシュではありません。ロングポーリングは通常のリクエストであり、タイムアウトが長くなります。メッセージがあれば、要求に答えます。クライアントは回答を受け取り、次のリクエストを開始します。この方法では、ほとんどの場合、オープンリクエストがあり、回答を待ちます。
pubsubhubbub の優れた人々は、RSSフィードを使用した優れたソリューションを持っています。 「PubSubHubBub」は、リアルタイム通知用の新しいプロトコルです。
つまり、アプリでリアルタイム通知をプッシュできるようにする方法は次のとおりです。
このテーマに関する包括的なプレゼンテーションについては、この youtube video を参照してください。
Nowjsの作成者によって作成された Bridge を見てください。 RailsアプリまたはNode.jsアプリ、さらにpythonアプリ。は多くの言語とプラットフォームをサポートしており、1日に何十億ものメッセージを処理できる非常に堅牢なシステムです。
PushRadar を見てください。クライアントに通知を即座に配信し、数十万の同時接続にスケーリングできます。使用可能なビルド済みの Rubyライブラリ があります。また、このサービスに固有なのは、エンドユーザーをWebサイトまたはWebアプリで実行したアクション、地理的な場所(国および大陸)、IPアドレス、Webブラウザー、およびユーザーIDでターゲットにすることができるという事実です。
例:
radar.target_country('US').target_not_action('live-chat').broadcast('test-channel',
{message: 'Would you like to talk to one of our customer support team members on live chat?'})
免責事項:私はPushRadarの創設者です。