Rails3.0+はPubNubを使用してリアルタイムでコンテンツをプッシュします
あなたが言うように、あなたが言うように、あなたのウェブサイトまたはウェブアプリのいくつかのソーシャル機能であなたのユーザーにリアルタイムの更新を安全かつ確実にプッシュするために、これで考慮すべき多くのオプションと多くのニュアンスがあります。 これには宝石があります! また、Rails 3.0以降のアプリとWebサイトの簡単なスタートガイドをここに提供することで、開始を支援します。gem install pubnub
まず、PubNubと呼ばれるリアルタイムコンポーネントを実行します。これにより、ターゲットユーザーまたはWebサイトやアプリのユーザーグループに直接通知を送信できます。これにより、オンラインでRailsサーバーからの通知の受信に関心のあるユーザーのみをターゲットにすることができます。これは、サーバー上でDBルックアップやその他のリソースを大量に消費する操作を必要としない効率的なサーバー送信イベントと見なすことができます。
RubyGEMインストール
gem install pubnub
PubNubGEMが必要
require 'pubnub'
PubNubクラスを初期化します
pubnub = Pubnub.new(
:publish_key => 'demo', # publish_key only required if publishing.
:subscribe_key => 'demo', # required always
:secret_key => nil, # optional - message signing
:cipher_key => nil, # optional - AES 256 Crypto
:ssl => true # optional - SSL 2048bit
)
Rails3.0+からWebアプリにメッセージを送信
これで、クラスの準備ができたRailsアプリからpubnub
、文字列、数値、配列、辞書/オブジェクトなど、あらゆる種類のJSONデータ型を送信できます。
- 文字列"
- 番号123
- 配列[1、2、3]
- オブジェクト{:a=>"アップル"}
次のコードは、Railsアプリからユーザーが実行しているブラウザーまたはWebアプリに直接メッセージを渡すプロセスを示しています。基本的に、サーバーから直接データを送信する必要がある場合は、データをユーザーに送信します。このpubnub.publish(...)
関数は、モバイルアプリやウェブアプリに転送するために、送信したメッセージをJSONとしてシリアル化します。
## Broadcast or Unicast to Browser App User(s)
pubnub.publish(
:channel => "event_feed_channel",
:message => { :event => "update", :from => "Jay", :feed => "New Updates!" },
:callback => lambda { |info| puts info }
)
このプロセスは、パフォーマンスとセキュリティの考慮事項に最適であり、DBクエリを必要としません。データベースサーバーやその他のリソースを大量に消費する操作を槌で打つことからあなたを救います。RailsアプリケーションでPubNubGEMを使用している間は、 このプロセスをSSE(サーバー送信イベント)と見なすことができます。
PubNub GEMを使用すると、基本的にサーバーからユーザーのブラウザー/アプリに直接イベントを送信します。これにより、クライアント側の定期的なAJAXリクエストが不要になります。これは、新しい情報が利用可能になったときにのみユーザーにデータを送信するためです。また、ホームサイトにアクセスして、Ruby機能の詳細を確認することにより、プレゼンスやストレージ/再生などのPubNubリアルタイムネットワーク機能の使用を検討することもできます。また、Railsコードへの統合中に必要に応じて、DevelopersDevConsoleをデバッグに使用します。
サーバー送信イベントを受信するようにブラウザを設定する
次に、initを実行してサーバーから送信されたイベントを受信するようにアプリを設定する必要があります。
<script src=http://cdn.pubnub.com/pubnub-3.4.2.min.js ></script>
<script>(function(){
// Class Setup
var pubnub = PUBNUB.init({ subscribe_key : 'demo' });
// Event Hook Setup
pubnub.subscribe({
channel : "event_feed_channel",
message : function(m){ pubnub.events.fire( m.event, m ) }
});
// RECEIVE the "update" Server Broadcast Event in the Browser
pubnub.events.bind( "update", function(message) {
console.log( "update a <div> with received event: ", m );
} );
})();</script>
高度なサブスクライブ接続オプションとイベントに興味があるかもしれないことに注意してください。
"update"
イベントがrubyコードの:event => "update"
メッセージ値とどのように同一であるかに注意してください。これは、指定した名前に基づいてイベントがトリガーされることを意味し、Webアプリページで実行するコードをトリガーするには、イベントをバインドする必要があります。このトリガーされたイベント内で、ユーザーが画面にリアルタイムで表示したい関連する詳細でユーザーインターフェイスを更新します。
また、:channel => "event_feed_channel"
はチャネルであり、これはJavaScriptクライアントコードpublish
のチャネルと同じである必要があります。subscribe
Ruby GEMのソースコードを読みたい場合は、GitHubPubNubRubyベースのAPIを介して入手できます。
これらは、Ruby 3.0以降のアプリの使用を開始し、サーバーからエンドユーザーにイベントを直接送信するための基本です。これは、iOSWebブラウザーまたはAndroidブラウザーで実行されるモバイルアプリでも機能することに注意してください。このメカニズムでは、古いバージョンのIEもサポートされています。さらに、オプションで、RailsサーバーからネイティブiOSアプリケーションおよびネイティブAndroidアプリケーションに直接サーバー送信イベントを検討することもできます。ご不明な点がございましたら、このフォーラムで質問してください。