Skip to content

Instantly share code, notes, and snippets.

@voluntas
Last active March 17, 2024 06:36
  • Star 44 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save voluntas/396167bd197ba005ae5a9e8c5e60f7cd to your computer and use it in GitHub Desktop.
時雨堂 Ayame Labo 開発ログ

時雨堂 Ayame Labo 開発ログ

日時:2022-04-19
作:時雨堂
バージョン:2022.1
URL:https://ayame-labo.shiguredo.app/

このサービスに興味がある人はこの資料に Star をつけてもらえると嬉しいです。

Ayame Labo は Ayame 仕様 の WebRTC の P2P 利用向けの無料で利用できるシグナリングサービスです。

シグナリングサーバ以外に、ルーム認証機能や TURN サーバを提供しています。 将来的にはウェブフックを利用した自前での認証/承認機能が利用可能になる予定です。

このサービスは Ayame を気軽に利用してもらいたいという思いから、提供しています。

GitHub アカウントさえあれば、すぐに無料で利用できます。

Ayame Labo

Ayame 仕様のリファレンス実装である WebRTC Signaling Server Ayame は OpenAyame プロジェクトとして開発しています、詳細は以下をご確認ください。

OpenAyame プロジェクト

このサービスを長く続けていきたいと考えているため、コスト削減を最初から行います。

  • このサービスのための機能を Ayame 側に追加することはしません
  • 無料プランのみで、有料プランは提供しません
  • サポートは提供しません
  • デザインは最低限です
  • 運用保証は行いません
  • 帯域保証は行いません
  • [x] 無料で利用可能
  • [x] 認証なしでの利用
  • [x] GitHub ID ログインした場合はシグナリングキーを利用可能
  • [x] STUN 払い出しの対応
  • [x] TURN 払い出しの対応
  • [x] 認証ログ確認機能

ルーム認証機能

ルーム ID に <GitHub ID>@ をつけることで、接続にシグナリングキーを要求します。

認証ログ確認機能

https://i.gyazo.com/af5988322cfe0e906dbc8984378c4dbd.png

まずはこちらをご覧ください。

Ayame Labo の使い方

Ayame Web SDK を利用する

OpenAyame/ayame-web-sdk: Web SDK for WebRTC Signaling Server Ayame

Ayame で利用できる Web SDK が公開されていますので、それを利用してください。

シグナリングキーなし

  • ルーム ID はここでは test-ayame-labo-room としていますが、推測されにくい値を指定してください
const conn = Ayame.connection('wss://ayame-labo.shiguredo.app/signaling', 'test-ayame-labo');
const startConn = async () => {
    const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
    await conn.connect(mediaStream);
    conn.on('disconnect', (e) => console.log(e));
    conn.on('addstream', (e) => {
        document.querySelector('#remote-video').srcObject = e.stream;
    });
    document.querySelector('#local-video').srcObject = mediaStream;
};
startConn();

これで接続できます。

シグナリングキーあり

  • ルーム ID を <自分の GitHub ID>@<好きな Room ID> のように指定してください
  • 自分のシグナリングキーをオプションで指定してください
const conn = Ayame.connection('wss://ayame-labo.shiguredo.app/signaling', 'shiguredo@test-ayame-labo');
const signalingKey = 'CO6p4pdJH4n7SfM6dBLIFzpvop9kefkypoDsddoPMhp3m4FX';
const startConn = async () => {
    const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true});
    await conn.connect(mediaStream, {'key': signalingKey});
    conn.on('disconnect', (e) => console.log(e));
    conn.on('addstream', (e) => {
        document.querySelector('#remote-video').srcObject = e.stream;
    });
    document.querySelector('#local-video').srcObject = mediaStream;
};
startConn();

これで接続できます。

WebRTC Native Client Momo で利用する

shiguredo/momo: WebRTC Native Client Momo

Momo で Ayame が利用できます。

シグナリングキーなし

  • ルーム ID はここでは test-ayame-labo-room としていますが、推測されにくい値を指定してください
./momo --no-audio ayame wss://ayame-labo.shiguredo.app/signaling test-ayame-labo

シグナリングキーあり

  • ルーム ID を <自分の GitHub ID>@<好きな Room ID> のように指定してください
  • 自分のシグナリングキーをオプションで指定してください

GitHub ID が shiguredo で、 ルーム ID が test-ayame-labo の場合:

./momo --no-audio ayame wss://ayame-labo.shiguredo.app/signaling shiguredo@test-ayame-labo \
    --signaling-key CO6p4pdJH4n7SfM6dBLIFzpvop9kefkypoDsddoPMhp3m4FX

https://discord.gg/shiguredo

2022-04-20

  • Ayame Labo サービスドメインを ayame-labo.shiguredo.app に変更しました
  • Ayame Labo TURN サーバを独立させ転送量を 2 TiB に変更しました
  • Ayame Labo の利用を日本国内のみに制限しました

2021-01-23

サンプルに AV1 を追加しました。

2020-11-01

Ayame Labo をリリースしました。

2019-12-09

正式リリースでは Ayame Lite を Ayame Labo という名前でリリース予定です。

2019-09-18

  • wss://ayame.shiguredo.jp/ws を無効にしました

2019-09-12

  • 支える技術を追記しました

2019-09-11

  • 認証ログ機能を追加しました
    • 直近 5 件の認証ログが確認できます

https://i.gyazo.com/af5988322cfe0e906dbc8984378c4dbd.png

2019-09-01

2019-08-30

2019-08-14

  • オープンベータテスト開始しました
  • オープンベータテスト向けにシグナリングキーありのサンプルを用意

2019-08-10

  • wss://ayame-lite.shiguredo.jp/signaling に変更しました
    • wss://ayame.shiguredo.jp/ws は使えなくなりました

2019-08-09

  • サービス名を Ayame Lite にしました
  • クローズドベータテストの参加募集を開始しました
    • GitHub ID が必要です
    • シグナリングキーが払い出されます
    • ルーム ID に自分の GitHub ID を prefix として利用することでそのルーム ID に認証をかけられます
    • TURN サーバ用の設定が払い出されます
      • Web SDK を使っていれば意識する必要はありません

2019-08-07

  • TURN の払い出し設定を iceServers に変更

2019-07-27

  • 認証サーバの開発を開始しました
    • GitHub アカウントを持ってシグナリングキーを取得することで特定のチャネルにアクセスするには認証が必要になります
  • TURN サーバ連携の開発を開始しました
    • シグナリングキーを利用した場合は TURN サーバで利用できる TURN 向け設定をシグナリングサーバが払い出すようになります

2019-07-13

  • WebRTC Signaling Server Ayame as a Service (仮) を公開しました
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment