シグナリング — Web

OpenTokシグナリングAPIを使用して、OpenTokセッションに接続されているクライアント間でテキストやデータを送信します。

OpenTokシグナリングAPIに関する概念的な情報については、 シグナリングの概要 開発者ガイド

このトピックには以下のセクションが含まれます:

セッション内の特定のクライアントにシグナルを送信する

セッション内の特定のクライアントにシグナルを送信するには、 signal() Session オブジェクトのメソッドを呼び出し、 to プロパティの signal パラメータが必要だ:

session.signal(
  {
    to: connection1,
    data:"hello"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

について to プロパティとは 接続 シグナルを送信したいセッションに接続しているクライアントに対応するオブジェクト。Connection オブジェクトへの参照は、Session オブジェクトがディスパッチを行う際に取得されます。 sessionConnected そして connectionCreated イベント. また、ストリームに対応するConnectionオブジェクトは、 connection プロパティを持つ。

について data プロパティの signal parameter は、メッセージとともに送信するデータ文字列です。このプロパティはオプションです。省略した場合、メッセージはデータペイロードなしで送信されます。データのサイズ上限は 8KB です。

について completerHandler パラメーターの signal() このメソッドは、メソッドの呼び出しが成功した場合または失敗した場合に呼び出されます。この error コンプリートハンドラに渡されるパラメータは、 null 呼び出しが成功した場合。メソッドの呼び出しが失敗した場合、エラーオブジェクトには以下のプロパティがあります: code (数値のエラーコード)、 message (エラーを説明する文字列)、および signal (…に対応するオブジェクト) signal パラメータに渡される。 signal() メソッド)。

さらに、 type プロパティの signal パラメータ。これは、クライアントがフィルタリングを行う際に使用できる文字列値です。 信号を待ち受ける:

session.signal(
  {
    data:"hello",
    type:"textMessage"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

の最大長。 type 文字列は128バイトであり、文字(A-Z、a-z)、 Numbers(0-9)、'-'、'_'、'~'のみを含まなければならない。

詳細については、以下のドキュメントを参照してください。 Session.signal() メソッドを使用する。

セッション内のすべてのクライアントに信号を送信する

セッション内のすべてのクライアントに信号を送信するには、 signal() Session オブジェクトのメソッドですが、 ~しないでください set a to プロパティを使用する。 signal パラメータが必要だ:

session.signal(
  {
    data:"hello"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

この関数に渡すその他のオプションの詳細については、 signal() メソッドについては、以下を参照してください。 前のセクション.

受信クライアントのセットを制限せずにこのメソッドを呼び出すと、複数のシグナルが送信されます(セッション内の各クライアントに1つずつ)。

セッションでの信号の受信

セッション内で送信されるすべてのシグナルを受信するには、 signal Session オブジェクトによってディスパッチされるイベント:

    session.on("signal", function(event) {
      console.log("Signal sent from connection " + event.from.id);
      // Process the event.data property, if there is any data.
    });

また、特定のタイプに設定されたシグナルのみを監視することもできます。(シグナルのタイプは、必要に応じて、 信号を送る.) イベントリスナーを登録して、 signal:type イベントで、「type」を型文字列に置き換えます。たとえば、以下は「foo」型のシグナルを監視します:

session.on("signal:foo", function(event) {
 console.log("Signal sent from connection " + event.from.id);
 // Process the event.data property, if there is any data.
});

以下を比較することができます。 from イベントオブジェクトのプロパティで、 connection Session オブジェクトのプロパティを使用して、シグナルが自身のクライアントから送信されたものか、それとも別のクライアントから送信されたものかを確認します:

session.on("signal:foo", function(event) {
  if (connection && event.from.connectionId != session.connection.id) {
    // Signal received from another client
  }
}

なお、 REST APIコール セッションに接続しているクライアントではなく、サーバー側からシグナルを送信する場合。この場合、 from イベント・オブジェクトの null.

自動再接続中に信号が送信されないようにする

クライアントは、予期せず(たとえば、ネットワーク接続が切断された場合など)セッションから切断された際、自動的に再接続を試みます。デフォルトでは、クライアントがセッションから一時的に切断されている間に送信されたシグナルはすべてキューに入れられ、再接続に成功した時点で(成功した場合に限り)送信されます。この設定は、 retryAfterReconnect プロパティ false に渡すオプションに Session.signal() クライアントが切断されている間、シグナルがキューに蓄積されるのを防ぐ方法。詳細については、以下を参照してください。 自動再接続.