新SkyWayのmetadataを使って情報を共有する

WebRTCライブラリ「SkyWay」の新バージョンがリリースされて以降、弊社でも複数のプロジェクトで新SkyWayを活用したWebRTCサービスを開発してきました。
今回は、その中で最近活用した「metadata」という機能についてお話ししたいと思います。

metadataとは?
metadataとは新SkyWayでサポートされた機能です。
これは通話チャンネルや通話ユーザーに紐づく形で設定される文字データで、プログラムから自由に書き換えることができます。また、書き換えを行うとSkyWayがそれを検知し、各メンバーへイベントがトリガーされるという特徴があります。
この機能を利用することで、WebRTC接続中のメンバー間でデータをやり取りすることができます。
似た機能としてデータコネクションがありますが、データコネクションははじめに接続処理を行う必要があるため、立ち上がりの反応速度はmetadataの方が優位です。

metadataの活用
データコネクションよりも反応がいいため、それに代わるデータのやり取りの手段としてmetadataの採用が検討できます。
使用も簡単で、更新対象と文字列データを指定するだけです。

// memberのメタデータを更新
member.updateMetadata(JSON.stringify(anyData));

room.onMemberMetadataUpdatedHandler = { member, metadata ->
    // いずれかのメンバーについてupdateMetadataが実行された
    scope.launch {
        doSomething(member, metadata)
    }
}

ただし、データコネクションから代替する場合は特に、以下の2点には気をつける必要があります。
・保持できるデータ量の上限があるため、それを超えないように扱わなければなりません。
・たとえ空更新でも、metadataの更新を行うとイベントがトリガーされます。差分がある場合にのみ実行される前提の処理などは気を付けて制御しなければなりません。

まとめ
メタデータを活用することで、WebRTC通話相手とのデータのやり取りをスムーズに行えるようになりました。
注意点はありますが、負荷軽減やレスポンス向上に効果的なため、引き続きうまく活用していきたいと思います。

弊社ではWebRTC開発案件も承っておりますので、問い合わせフォームよりお気軽にご相談ください。