Skip to content

Instantly share code, notes, and snippets.

@voluntas
Last active February 19, 2024 16:25
Show Gist options
  • Star 90 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save voluntas/90cc9686a11de2f1acca845c6278a824 to your computer and use it in GitHub Desktop.
Save voluntas/90cc9686a11de2f1acca845c6278a824 to your computer and use it in GitHub Desktop.
OpenAyame プロジェクト

OpenAyame プロジェクト

日時

2022-12-10

時雨堂

バージョン

2022.1

URL

https://github.com/OpenAyame

このプロジェクトに興味がある人はこの資料や GitHub リポジトリ に Star をつけてもらえると嬉しいです。

depth

1

概要

時雨堂 では WebRTC SFU Sora という製品を開発、販売しています。 ありがたいことに多くの会社で採用いただいています。

ただ、 WebRTC の P2P で利用できるという特徴を利用できていない残念でした。 ビジネスでは SFU を利用するのが現実ですが、もっと気軽に WebRTC の P2P 機能を利用できないか?と考えていました。

そこで WebRTC SFU をフルスクラッチで開発している会社が、 WebRTC の P2P 向けのシグナリングサーバを開発しオープンソースで公開し提供していくことで、 WebRTC の P2P を利用してもらえればと考え、このプロジェクトを立ち上げました。

WebRTC Signaling Server Ayame

URL

https://github.com/OpenAyame/ayame

Ayame 仕様に準拠した WebRTC Signaling Server Ayame は WebRTC P2P 用のシグナリングサーバです。

制限

ルーム数の作成は制限はありませんが、 1 ルームに参加できるユーザ数を 2 名、 つまり 1 対 1 に制限することで、クライアント、サーバ両方の実装をシンプルに保っています。

3 名以上の場合は P2P ではなく、 SFU や MCU を使うべきという方針です。

Ayame 仕様

  • シグナリング方式は独自
  • ルーム数は無制限
  • 1 ルームは最大 2 名に制限
  • Unified Plan のみに対応
  • Chrome / Firefox / Safari / Edge 最新版に対応
  • メディアチャネルとデータチャネルの両方に対応
  • ウェブフックで認証
  • ウェブフックで払い出し
  • Web SDK を提供
  • Web サンプルを提供

詳細な仕様は以下から確認できます。

OpenAyame/ayame-spec

動作環境

  • Go
    • 1.16 以降

方針

  • Ayame の仕様を公開する
  • Go で書かれたリファレンス実装のシグナリングサーバを提供する
  • サポートはしない
  • 機能追加 PR は慎重に
  • バグ修正のみ受け付ける
  • オフラインのイベントには参加しない
  • 機能を抑えて仕様をシンプルにする
  • SDK は Web 版のみの対応にする

ロードマップ

  • [x] 認証機能
    • [x] 認証サーバに問い合わせ
    • [x] ウェブフック URL 払い出しによる二段階認証への対応
  • [x] 承認機能
    • [x] WebSocket 経由での払い出し
    • [x] 認証サーバから払い出し
    • [x] TURN サーバ用のコンフィグ払い出しへの対応
  • [x] 切断ウェブフック
    • [x] 切断時に指定したウェブフック URL に通知を飛ばす
  • [x] SDK の提供
    • [x] Web
  • [x] メディアチャネル対応
  • [x] データチャネル対応
  • [x] SDK でのコーデック指定対応
  • [x] サンプル
    • [x] Web
      • [x] sendrecv.html
      • [x] sendonly.html
      • [x] recvonly.html
      • [x] datachannel.html
    • [x] React
  • [x] OpenMomo プロジェクト で利用できる

ライセンス

WebRTC Signaling Server Ayame のソースコードライセンスは Apache License 2.0 として公開しています。

Ayame Labo

Ayame を無料で利用できる無保証のサービスを公開しています

URL

Ayame Labo

  • サインアップなしでも利用できます
  • サインアップした場合以下の機能が利用できます
    • TURN サーバが利用できます
    • ルームへの接続が認証必須になります
    • 認証ログが確認できます

詳細は以下をご確認ください。

Ayame Labo 開発ログ

利用例

Discord

アドバイスはしますが、サポートはしません

https://discord.gg/shiguredo

FAQ

iOS や Android で利用したいです

iOS や Android の SDK を用意する予定はありません。 シグナリングの仕様を公開しておりますので、対応してみてください。

Unity で利用したいです

Unity の SDK を用意する予定はありません。 シグナリングの仕様を公開しておりますので、対応してみてください。

ライブラリは以下をおすすめします。

Unity-Technologies/com.unity.webrtc: WebRTC package for Unity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment