こちらのバックエンドの実装です。 AWS SAMを利用させていただいております。 とにかくwebrtcを試してみたいために作ったのでいろいろザルです。 ぶっちゃけよく見ればいろいろバレて、いろいろできてしまいますが、 完全に趣味で私のポケットマネーで運営してるのでどうかいじめないでください。お願いします。
dynamodbのレコードイメージ
pk | connectionID | roomID |
---|---|---|
connectionID:78iujhyt542qw | 78iujhyt542qw | johnroom |
connectionID:4edfgtredf0ol | 4edfgtredf0ol | johnroom |
roomID:johnroom |
GSI
roomID(KeySchema) | connectionID(projection) | userName(projection) |
---|---|---|
johnroom | 78iujhyt542qw | john |
johnroom | 4edfgtredf0ol | michel |
wscat
コマンドを使ったデバッグの例です
接続
wscat -c wss://{{ api gateway endpoint }}/slsrtc
接続に成功すると接続IDとともに通知を受信します
{"type":"connected","body":"{your connection id}"}
某whereなんとかとかいうビデオ会議のapiではrestで提供されているあれです。
課金とかセキュリティとか、レスポンスのハンドリング考えるとrestのほうがいいかもしれないです。
めんどくさいのでwebsocketで全部実装してしまいました。
{ "action": "createroom" }
ルームIDとともにroom-created
イベントを受信するのでそのIDを控えてください
{"type":"room-created","body":"{generated room id}"}
create room で作成したroom id を指定してroomに参加します。
{"action":"enterroom","roomID":"{generated room id}"}
参加に成功するとすべてのroomメンバーにenter
イベントがブロードキャストされます
{"type":"enter","roomID":"{room id}","connectionID":"{your connection id}"}
このイベントをトリガーにWebRTCのシグナリングを開始します。
誰かが接続が切れるとleave
イベントが同じルームのコネクションにブロードキャストされます。
{"type":"leave","roomID":"{room id}","connectionID":"{your connection id}"}
このイベントを利用してWebRTCのコネクションを破棄します。