Skip to content

Instantly share code, notes, and snippets.

@voluntas voluntas/open_ayame.rst
Last active Jun 13, 2019

Embed
What would you like to do?
OpenAyame プロジェクト

OpenAyame プロジェクト

日時:2019-06-08
作:時雨堂
バージョン:19.06.1
URL:https://github.com/OpenAyame

このプロジェクトに興味がある人はこの資料に 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 を使うべきと考えています。

互換性

OSS として公開されている AppRTC と互換性のあるシグナリングプロトコル採用しています。 ただし、一部 TURN 関連の払い出しに関連して、プロトコルの拡張を行っています。

webrtc/apprtc: The video chat demo app based on WebRTC

採用事例

まだありません。

WebRTC Signaling Server Ayame as a Service

Ayame を無料で利用できる無保証のサービスを検討中です

OpenAyame クラウドサービス草案 – V – Medium

  • GitHub ログイン必須
    • ルーム ID の Prefix が GitHub ID 必須になります
  • シグナリングキーの提供
    • サービス利用には認証が必須です、そのためシグナリングキーを送信する必要があります
    • シグナリングキーの再生機能
  • ウェブフック機能
    • Ayame 認証はシグナリングキーとルーム ID の組み合わせしかチェックしません
    • ホスト情報やそれ以外の情報は全てウェブフック機能を利用してご自分で認証を行ってもらいます
  • authnMetadata 機能
    • 好きな JSON をウェブフック URL に対して投げつけることが可能です
    • {"authnMetadata": ""}
  • authzMetadata 払い出し機能
    • ウェブフック URL から好きな JSON を払い出すことができます
    • これはクライアントに通知されます
    • {"authzMetadata": ""}
  • TURN サーバの提供
    • TURN-UDP/TCP/TLS をデフォルトポートで提供します
    • TURN 利用時はビットレート制限により 300kbps 程度に抑える予定です

方針

  • Go で書かれたシグナリングサーバを提供する
  • サービスは無保証で提供する
  • サポートはベストエフォートで行う
  • オフラインのイベントは行わない
  • 機能追加 PR は慎重に
  • バグ修正のみ受け付ける

ゴール

  • 最新ブラウザに追従し続ける
  • クライアント側のサンプルを用意する
  • SDK の提供
  • OpenMomo プロジェクト で利用できる
  • Redis を利用してスケールアウト可能にする
    • デフォルトでは Redis は不要にする
  • TURN サーバ連携
  • 認証
    • 認証サーバに問い合わせ
  • 承認
    • WebSocket 経由での払い出し
    • TURN サーバの Username/Credential はシグナリングサーバによる払い出し
    • 認証サーバから払い出し
  • SDK
    • Web
    • React Native
  • サンプル
    • Web
      • React
      • Vue
    • React Native
  • WebRTC's Statistics API 対応

進捗

2019-06-08

2019-05-31

  • iOS/Android サンプルの提供は一旦取り下げる
  • 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 プロジェクト正式スタート

WebRTC Signaling Server Ayame 仕様

  • ルーム数は無制限
  • 1 ルームは最大 2 名に制限
  • Unified Plan のみに対応
  • Chrome / Firefox / Safari 最新版に対応
  • Web / React Native SDK を提供
  • React / React Native のサンプルを提供

互換性

  • AppRTC シグナリングプロトコル互換
  • 認証/認可部分を拡張
  • over WebSocket な Ping/Pong を拡張
    • フラグにて指定可能

動作環境

  • Go
    • 1.12

サポート

無料でのサポート提供は行いません。

Discord

ベストエフォート運用です

https://discord.gg/mDesh2E

カスタマイズ

現時点では提供しません。

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.