2016-04-08 18 views
1

ユーザーがtokboxセッションに公開していて、同じユーザーが別のデバイスにログインしているか、別のブラウザウィンドウでセッションを再開するような理由で、出版から2番目のもの。ストリームのリストがある場合にTokbox-同じユーザーが2回公開しないようにする

幸いにも、ストリームのメタデータに、私は、ユーザーIDを保存していますので、既存のストリームがログインしているユーザーに属しているかどうかを確認するのは簡単です。

とき出版社は、以下の問題が発生した初期化される:

  1. は、この問題が発生したときに、新しいストリームにサブスクライブsession.on("streamCreated")の音を聞き
  2. スタート出版

問題は、セッションが初期化されるときに、セッションの現在のストリームを検査して、このユーザーが既に公開しているかどうかを確認する方法がないことです。 on("streamCreated")コールバックが起動するまでストリームが何であるかわかりません。

私には、私が紛失している簡単な解決策があるという勘違いがあります。何か案は?

答えて

1

ストリームメタデータにユーザーIDを保存すると、パブリッシャーを初期化するときに「名前」プロパティが設定されたとします。それはすばらしいテクニックです。

私のアイデアはちょっとハックですが、今のところ最高のものです。すべてのストリームは、すべてのストリームは、#1の間に

を作成前にこのクライアント接続

  • を作成

    1. :私は基本的に2つの段階にストリームのサブスクリプションを分割することにより、この問題を解決するだろう私は各ストリームの "名前"プロパティをチェックして、このクライアント接続のユーザーに属しているかどうかを確認します。そうであれば、彼らはセッションを2回入力していることを知っていて、フラグを設定することができます("userRejoining"と呼ぶことができます)#1が完了したことを知るために、タイマーを設定しますこうした1秒として妥当な時間のため"streamCreated"イベントが到着するたびに、および以前のタイマーを削除します。

      その後"userRejoining"フラグが設定されていない場合は、出版社が初期化され、セッションに公開される。

      #2の間に作成されたストリームを購読するだけです。

      ここでは、ユーザーエクスペリエンスが1秒ごとに遅れていることが欠点です再。大規模なグループシナリオでは、これは取引を破る可能性がありますが、より小さい(1:1)タイプのセッションでは、これは容認されるべきです。私はこの説明がはっきりしていることを願っています。そうでない場合は、サンプルコードを書くことができます。

  • +0

    注:各ストリームには、独自の接続より古いかどうかを判断するために使用できる「creationTime」プロパティがあります。私は古いストリームがすべて完了したときと、フェーズ2(上から)にいると判断できるときを判断するのに役立たないので、ここでは便利だとは思わない。 – Ankur

    関連する問題