WebRTC SFU 単独ではサービスが作れるわけではない。もちろんアプリが必要だ。そのアプリとの連携は必須になる。
ただ、 WebRTC SFU 側に判断機能をできるだけ入れたくない。つまり委譲機能を積極的に積んでいきたい。
アプリとの連携のために WebRTC SFU は Stream API と Action API そして Event API を提供する。
Stream API は簡単にいってしまえば WebSocket の口だ。つまりアプリは WebSocket を WebRTC SFU に対して接続しにいく。その後は WebRTC SFU で管理している状態が変化するタイミングでストリームデータが流れてくる。
Action API はアプリから WebRTC SFU に対して処理を依頼する。たとえば特定の接続ユーザを切断させたい場合に使う。
Event API は Stream API の同期版だ。アプリケーション側の判断をすぐに戻したい場合に使う。たとえば認証やパーミッションに使う。
この 3 つの API 機能を使うことで WebRTC SFU 自体は WebRTC に関係する状態の管理を行うだけに押さえられる。
アプリ側で好きなだけ判断ができるようになる。また Stream API から受け取った情報をクライアントへ WebSocket 経由でリアルタイムに配信するという二次配信も可能になる。
もう少し API の例を掘り下げてみる。配信者は配信するためのアクセストークンを付けて WebRTC SFU に WebSocket で接続へ行く。
そのタイミングで WebRTC SFU はアプリにたいしてアクセストークンを Event API を使って投げつけてくる。アプリはそのアクセストークンが正しいどうかを判断して、問題なければ 200 問題あれば 400 で返す。
WebRTC SFU は 200 が返ってくれば配信を開始する。400 が返ってきた場合は接続を拒否する。といった感じだ。