• スポンサードリンク

WebRTCのオフィシャルプレビルドライブラリを使うサンプルを公開した(後編)〜janus-gatewayへ繋ぐのじゃ(パート4)〜

Android WebRTC アプリ

janus-gatewayのAPIの定義は公式サイトを見てもらうとして、でもあれってこんなんを送ったらこんなんが返ってくるかもぉっていう感じで、あくまでもアクセス例であって定義ではないと思うんよね。載ってないフィールドも有ったりするし???

ということで、Retrofit2でのAPI定義インターフェースを載せちゃうぞ?

まずは、janus-gatewayそのものに対するREST風APIの定義から。前回のlong pollのと一緒で先頭に{api}を入れているのはjanus-gatewayの設定でその部分のpathを変更することが可能だからであーる(まだ酔ってないよ)。多少冗長なのもあるけど、勘弁してな。あとPOJOはGitHubのリポジトリJanusRTCAndroidをみてな。

上から順に何をするAPIかを簡単に書くとこんな感じです。

  1. create
    セッションを作成するためのAPI、返り値のセッションidを使って以降の処理を行います。
  2. info
    前回も少し触れましたが、janus-gatewayのサーバー情報を取得するためのAPIです。
  3. attach
    janus-gatewayの実際の処理はプラグインを経由して行います。attachは指定したプラグインへ接続を行います。返ってきたプラグインid(プラグインハンドル)とセッションidを使うとプラグインに対して処理要求を行うことができます。
  4. destroy
    セッションを終了します。プラグインにattachしていればそれも開放されます。

videoroomプラグインに対するAPI定義はこんな感じ。
見て分かる通り、APIを送る先は全て同じ…違うのはリクエストボディだけなので本来はsendだけあれば十分なのですが、そうするとぱっと見でわかりにくくなるのと、リクエストボディのJSON文字列を自前で作らないといけなくなってしまい面倒なので、POJOからリクエストボディを生成できるようにヘルパーとして追加してあります。なのでこっちも多少冗長ですが、勘弁してな。そもそもPOJO使わずに自前で送信データ生成するならRetrofit2を使う理由が半減してしまう気がするし。

こっちも上から順に何をするAPIかを簡単に書くとこんな感じになります。

  1. join
    ビデオチャットルームへ参加します。publisherとして参加する場合もsubscriberとして参加する場合も同じAPIを叩きますが、リクエストボディが少し違います。
  2. offer
    シグナリングの際にofferを送る時に呼び出します。でも対となるanswerを送る時はsendで^^;
  3. trickle
    シグナリングの際にIceCandidateを送る時に呼び出します。
  4. trickleCompleted
    シグナリングの際にIceCandidateを送る時に呼び出します。本来はtrickleだけでいいのですが、リクエストボディが少し違うので専用に。
  5. send
    プラグインに対するAPIコールは全てパスが同じでリクエストボディが違うだけなので実際はこのsendだけで十分です…以下省略
  6. detach
    プラグインからdetachします。これを呼び出すとプラグインid(プラグインハンドル)は無効になります。
  7. hangup
    プラグインとはattachしたままでPeerConnectionだけを切断したい場合に使うらしいです、でもサンプルアプリでは使っていません(。・_・。)いまいちユースケースを思いつかない?

API定義は以上、つまりこれであなたもフルスクラッチでjanus-gatewayと接続できる…
んなわけねーだろな?まぁできる人もいるだろうけどたいていはダメだろうなぁ^^;WebRTCのシグナリング周りに詳しければなんとかなるかもしれないけど、そもそもそれならこの記事を読まなくても作れるよな。

飲んでは無いけど眠くなってきた(=_=)

実はこっから先は書くのが難しい、WebRTCワカラナイマン(。・_・。)
単純に言葉で表せば、janus-gatewayの話というよりも、WebRTCのPeerConnectionFactoryとPeerConnectionからのイベント/コールバックとそれに応じてjanus-gatewayのAPIを叩くってことになるんだけど。

えっとぉーPeerConnectionとはなんぞや?とかとかとかはきれいスッパリなくして本家WebRTCのサイト等を見てもらうことにしよう(^o^)/ 残るはAndroidでWebRTCの現時点でのネイティブAPIを使う時にどないするかということで、一旦janus-gatewayから離れてAndroidでWebRTCネイティブAPIを使う話を書こう(iOS?なにそれ?おいしいの?)。

続く(^.^)/~~~

« »

  • スポンサードリンク