WebRTC Signaling Server Ayame サービス版
OpenAyame プロジェクトで開発している WebRTC Signaling Server Ayame を自社でサービス版を提供してみています。
WebRTC Singaling Server Ayame as a Service (仮)
まずは誰もが使えるシグナリングサーバだけを提供しています。
wss://ayame.shiguredo.jp/ws
基本的にはサービスの草案に沿って開発をしていっています。
アカウント登録不要で利用できる
GitHub アカウントを利用してサービスに登録できるような仕組みを追加予定ですが、サービスに登録しなくてもシグナリングサーバは自由に利用できるようにしていきます。
これは単にアカウント登録しないと「使えない」ってのがだるいなと思ったからです。
GitHub アカウントを利用して登録すると使える機能
サービスに登録すると特典がいくつかあります。
ルーム ID に認証をかけるシグナリングキーが提供される
GitHub アカウントを利用した場合はルーム ID の prefix が GitHub ID になります。例えば GitHub アカウントが voluntas の場合は voluntas@ という Prefix が必ずルーム ID に追加されます。 @ の後ろは自由に指定して構いません。
サービスとして、この形式のルーム ID を利用する場合は必ずシグナリングキーの指定が必須になります。
例えば voluntas@test-room というルーム ID を利用する場合はシグナリングキーをかならずチェックするという仕組みです。
TURN サーバ用の設定が払い出される
TURN サーバは NAT 超えが難しいネットワークでもサーバ経由でなんとかしてくれます。こちらを Ayame サービス版に用意して、サービスに登録してくれた場合は利用可能にします。
サービスの認証時の払い出しに turnConfig という TURN 向け設定を払い出します。Ayame の SDK を利用している場合は何も設定することなく勝手に TURN サーバが設定されるという仕組みです。
ただし、帯域制限はがっつりかけさせてもらいます。おそらく 200~300kbps 当たりまで利用可能な帯域を下げる予定です。
ウェブフックが指定できる
もともとサービス側でシグナリングキーとルーム ID の組み合わせで認証を行います。また TURN の払い出しも行います。
ただし、さらに利用者の認証サーバに対して問い合わせを行います。そこで利用者側で利用可能なのか不可能なのかの判断が可能です。
その他の機能
認証メタデータ機能
認証時に値をクライアント側から指定できます。サービスの認証サーバはスルーしますので、利用者側の認証サーバで判断をしてください。
承認メタデータ機能
サービスの認証サーバは turnConfig 以外はクライアントに払い出しません。利用者側の認証サーバから authzMetadata を好きに払い出してください。
ログ確認機能
認証サーバでエラーが起きた場合などのエラーをダッシュボードから確認可能にしていく予定です。
統計確認機能
今までどのくらいのクライアントがつないだのかなどを溜め込んで行く予定です。サービス全体統計も見られるようにしたいなと考えています。
まとめ
シグナリングサーバ自体できるだけ機能は小さくつくり、サービス側でも最低限の機能だけを提供するというのが方針になっています。
高機能にするとコードが複雑になるためそこは SFU や MCU を利用すべきです。
Ayame 自体は最近のリリースからバイナリを提供し始めました。また OSS として公開し、ベンダーロックインフリーですので、サービスを自分で始めていただく事も可能です。
できるだけシンプルで使いやすいサービスを提供していければと思います。