Skip to content

Instantly share code, notes, and snippets.

@voluntas

voluntas/open_ayame.rst

Last active Nov 27, 2020
Embed
What would you like to do?
OpenAyame プロジェクト

OpenAyame プロジェクト

日時:2020-08-13
作:時雨堂
バージョン:2020.10
URL:https://github.com/OpenAyame

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

概要

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

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

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

WebRTC Signaling Server Ayame

URL:https://github.com/OpenAyame/ayame

WebRTC Signaling Server Ayame は WebRTC P2P 用のシグナリングサーバです。

制限

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

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

仕様

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

動作環境

  • Go
    • 1.14 以降

方針

  • 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 Lite

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

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

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

Ayame Lite 開発ログ

オープンベータテスト

ベータテストを開始しています。是非使ってみてください。

Ayame Lite (オープンベータ)

利用例

Discord

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

https://discord.gg/mDesh2E

FAQ

iOS や Android で利用したいです

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

Unity で利用したいです

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

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

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

進捗

2020-07-23

2020-06-23

2020-04-03

2020-02-17

  • Ayame は iOS / Android SDK の開発を行わないことにしました
    • モバイルに関しては React Native のみに対応していきます

2020-01-28

2020-01-17

2020-01-12

2019-12-27

2019-10-16

  • iOS SDK 開発を開始
  • Unity SDK を開発予定に追加
  • Electron サンプルを開発予定に追加

2019-09-27

  • Ayame Web SDK を Flow から TypeScript に切り替えました

2019-09-15

2019-09-09

  • Go 1.13 へ対応
  • 切断ウェブフックを検討

2019-08-20

2019-08-14

2019-08-11

  • Ayame Web SDK 19.08.0 をリリースしました
    • [CHANGE] signaling key を指定できるようにする
    • [CHANGE] onconnect コールバックを signalingState が connected になったときに呼ぶ
    • [CHANGE] audio のコーデック指定をなくす
    • [UPDATE] register 時に iceServers の値を server 経由で設定できるようにする
    • [UPDATE] webpack から rollupjs に変更する
    • [ADD] datachannel に対応する
    • [ADD] video, audio のコーデック指定をサポートする
    • [FIX] Safari 対応 (SDP 書き換えも含む)
  • Web SDK が DataChannel に対応しました

2019-08-09

  • Web SDK を TURN や STUN の iceServers 払い出しに対応しました

2019-08-06

  • Web SDK の映像コーデック指定が Safari と Firefox に対応しました
  • Web SDK のデータチャネル対応を開始しました

2019-08-03

2019-07-25

2019-07-19

  • 画面共有 (getDisplayMedia) のサンプルを追加しました

2019-07-13

2019-07-05

2019-06-08

2019-05-31

  • Web と React Native のサンプルのみ提供を進めていく
  • Vue のサンプルをメンテナンスするか検討する

2019-05-26

2019-02-21

2019-02-19

2019-02-18

2019-02-17

  • Ayame の Go バージョンを開発を開始
  • ルーム機能をサンプルへの追加を開始

2019-02-15

2019-02-12

2019-02-06

  • GithHub に React と Vue のサンプルリポジトリを用意予定

2019-02-04

シグナリングサーバの起動:

$ yarn start

2019-02-01

  • OpenAyame プロジェクト正式スタート
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.