まずはこのリポジトリをクローンします。
推奨バージョンは以下のようになります。
go 1.20
$ go install
$ make
$ make init
ビルドに成功したら、以下のコマンドで Ayame サーバーを起動することができます。
$ ./bin/ayame
Ayame Web SDK のサンプルを利用することで動作を確認できます。
$ git clone [email protected]:OpenAyame/ayame-web-sdk-samples.git
$ cd ayame-web-sdk-samples
$ npm install
main.js URL を 'ws://127.0.0.1:3000/signaling'
に変更
https://github.com/OpenAyame/ayame-web-sdk-samples/blob/master/main.js#L1
$ npm run dev
http://127.0.0.1:5000/sendrecv.html をブラウザタブで2つ開いて接続を押してみてください。
$ ./bin/ayame version
WebRTC Signaling Server Ayame version 2020.1.5
$ ./bin/ayame
2020-01-08 07:04:58.392536Z [INFO] AyameConf debug=true
2020-01-08 07:04:58.392685Z [INFO] AyameConf log_dir=.
2020-01-08 07:04:58.392714Z [INFO] AyameConf log_name=ayame.log
2020-01-08 07:04:58.392737Z [INFO] AyameConf log_level=debug
2020-01-08 07:04:58.392761Z [INFO] AyameConf signaling_log_name=signaling.log
2020-01-08 07:04:58.392781Z [INFO] AyameConf listen_ipv4_address=0.0.0.0
2020-01-08 07:04:58.392803Z [INFO] AyameConf listen_port_number=3000
2020-01-08 07:04:58.392829Z [INFO] AyameConf authn_webhook_url=
2020-01-08 07:04:58.392847Z [INFO] AyameConf disconnect_webhook_url=
2020-01-08 07:04:58.392868Z [INFO] AyameConf webhook_log_name=webhook.log
2020-01-08 07:04:58.392891Z [INFO] AyameConf webhook_request_timeout_sec=5
$ ./bin/ayame -help
Usage of ./bin/ayame:
-c string
ayame の設定ファイルへのパス(ini) (default "./config.ini")
クライアントは ayame への接続可否を問い合わせるために WebSocket に接続した際に、まず "type": "register"
の JSON メッセージを WS で送信する必要があります。
register で送信できるプロパティは以下になります。
"type"
: (string): 必須。"register"
を指定する"clientId"
: (string): 必須"roomId"
: (string): 必須"signalingkey"
(string): オプション"authnMetadata"
(object): オプション"ayameClient"
(string): オプション"environment"
(string): オプション"libwebrtc"
(string): オプション
ayame.ini
にて authn_webhook_url
を指定している場合、
ayame は client が {"type": "register" }
メッセージを送信してきた際に config.ini
に指定した authn_webhook_url
に対して認証リクエストを JSON 形式で POST します。
また、 認証リクエストの返り値は JSON 形式で、以下のように想定されています。
"allowed"
: (boolean): 必須。認証の可否"reason"
: (string): オプション。認証不可の際の理由 (allowed
が false の場合のみ必須)"iceServers"
: (array object): オプション。クライアントに peer connection で接続する iceServer 情報
allowed
が false の場合 client の ayame への WebSocket 接続は切断されます。
"clientId"
: (string): 必須"roomId"
: (string): 必須"signalingkey"
(string): オプション"authnMetadata"
: (object): オプション- register 時に
authnMetadata
をプロパティとして指定していると、その値がそのまま付与されます
- register 時に
"ayameClient"
(string): オプション"environment"
(string): オプション"libwebrtc"
(string): オプション
"allowed"
: (boolean): 必須。認証の可否"reason"
: (string): 認証不可の際の理由 (allowed
が false の場合のみ)"authzMetadata"
(object): オプション- クライアントに対して任意に払い出せるメタデータ
- client はこの値を読み込むことで、例えば username を認証サーバから送ったりということも可能になる
{"allowed": true, "authzMetadata": {"username": "ayame", "owner": "true"}}
ngrok - secure introspectable tunnels to localhost の使用を推奨しています。
$ ngrok http 3000
ngrok by @xxxxx
Session Status online
Account xxxxx
Forwarding http://xxxxx.ngrok.io -> localhost:3000
Forwarding https://xxxxx.ngrok.io -> localhost:3000