2016-08-08 14 views
3

pub-nub v4を使用してAPIベースのレールアプリがあります。 pub-nubを使用するクライアント側(IOS/Android)の場合と同じです。公開時複数の同じリクエストを取得するpubnubv4 rails

1)我々は、このオブジェクトに基づいて2チャンネルの加入されている2つのチャンネルの加入し、クライアント側でlistener.here.At同じ時間を作成している任意のオブジェクトを作成するには:ここでは

は、私たちがやっている段階ですid。

2)Webエンドで複数のリクエストを作成する同じチャンネルのIOSエンドからの公開については、複数のDBエントリが作成されます。

以下は、購読および購読解除のコードサンプルです。

$pubnub.add_listener("broadcast_#{broadcast.id.to_s}") 

$pubnub.subscribe("broadcast_#{broadcast.id.to_s},broadcastLikes_#{broadcast.id.to_s}") 


$pubnub.publish("broadcast_#{self.id.to_s}", { type: "StopBroadcast", text: text }) 
$pubnub.remove_listener("broadcast_#{self.id.to_s}") 
$pubnub.unsubscribe("broadcast_#{self.id.to_s}, broadcastLikes_#{self.id.to_s}") 

誰でも手伝ってください!

+0

Railsサーバーを購読しているのはなぜですか?クライアントからサーバーにメッセージを送信する必要がある場合は、POSTするだけでよいのですか?あなたのサーバーから購読することによってあなたがやっているのは、従来のWebアプリのPOSTに取って代わるものです。あなたがPubNubを使うべき部分は、もう一つの方向です:サーバからクライアントへ。 –

+0

@CraigConoverここでadd_listenerの役割とは何ですか?subscribeとadd_listenerの関係は何ですか?add_listenerを使用しないと、登録済みのコールバックを追跡できないため、緊急です。 –

+0

名前を動的に生成する複数のリスナーをどのように処理すればよいか、例を挙げてください。 –

答えて

1

コメントから回答を集めた:

あなたのサーバーにクライアントからメッセージを送信する必要がある場合は、その理由だけではなく、それらをPOST?あなたのサーバーから購読することによってあなたがやっているのは、従来のWebアプリのPOSTに取って代わるものです。あなたがPubNubを使うべき部分は、もう一つの方向です:サーバからクライアントへ。

Q:ここではadd_listenerの役割は何ですか? subscribeとadd_listenerの関係は何ですか?

A:リスナーはすべてのチャネルサブスクリプションの応答とステータスです。 すべてのチャンネルに対して、単一のグローバル(アプリレベル)リスナーのみを作成します。チャンネルを購読すると、そのチャンネルに公開されたメッセージはリスナーに届きます。チャンネルから退会すると、そのチャンネルに公開されたメッセージは受信されなくなります。多くのチャンネルを購読することができますので、希望するチャンネルを購読している(聞いている)チャンネルをコントロールできます。すべてのチャンネルの登録を解除すると、メッセージは表示されなくなります。

Q:複数のメッセージを同時に処理できる単一のグローバルリスナーは疑いがありますが、見逃す可能性はありますか?このリスナーを削除する必要がありますか?はいの場合はいつですか?そして、新しいルビーPubNub v4のように、リスナーについての詳細は示されていないので、混乱してしまいます。

A:単一のリスナーデザインパターンでメッセージを見逃すことはありません。現在、複数のリスナー(少なくとも1つのボックスではない)に対するサポートはありませんが、それが複数のリスナー要件に興味を持っている理由です。しかし、シングル/グローバルリスナーは、あなたのアプリが購読しているすべてのチャンネルに公開されているすべてのメッセージを受け取ることができます。

Q:この場合、リスナーを削除する必要はありますか?はいの場合はいつ。いいえの場合は問題がありますか?複数のリスナーの要件に従って、各リスナーを独自のイベントリスンで区切ることで、単一のグローバルリスナーの負荷を軽減できます。これは、複数のコールバック要求が一度に同じコールバックに当たっている場合に備えます。

A:本当にremoveListenerを行う必要はありません。しかし、あなたがアプリでPubNubでやっていないなら、ちょうど少しメモリをきれいにすることができます(ほとんどありませんが)。そして私はあなたに保証します、あなたは問題なしで単一のリスナーを使用することができます。それは過負荷にならないでしょう。リスナーはマルチスレッド/スレッドセーフです。そうしないと、PubNubはまったく動作しません(または望ましい方法で)。

関連する問題