Skip to content

Instantly share code, notes, and snippets.

@voluntas voluntas/open_ayame.rst
Last active Apr 18, 2019

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

OpenAyame プロジェクト

日時:2019-02-23
作:時雨堂
バージョン:19.02.14
URL:https://github.com/shiguredo/ayame

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

概要

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

ただ、 WebRTC の P2P で利用できるという特徴を利用できていない残念でした。ビジネスでは SFU を利用するのが現実ですが、個人開発者がもっと気軽に WebRTC の P2P 機能を利用したり、学べる仕組みを提供できないか?と考えていました。

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

WebRTC Signaling Server Ayame

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

制限

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

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 を無料で利用した無料で利用できる無保証のサービスも公開準備中です

  • GitHub ログイン必須
  • ダッシュボードでのシグナリングキーの生成
    • シグナリングサービスを利用する際はシグナリングキーを送信する必要があります
  • シグナリングキーの再生機能
  • TURN サーバの提供
    • TURN-UDP/TCP/TLS をデフォルトポートで提供します

目的

サービスの提供

  • WebRTC P2P 向けシグナリングサーバを無保証のサービスとして提供する
  • coturn サーバを無保証のサービスとして提供する

ソースコードの提供

  • WebRTC P2P 向けシグナリングサーバを OSS として Apache License 2.0 で提供する

方針

  • Go で書かれたシグナリングサーバを提供する
  • Redis を利用してスケールアウトを実現する
  • coturn の設定を提供する
  • サービスは無保証で提供する
  • サポートはベストエフォートで行う
  • オフラインのイベントは行わない
  • 機能追加 PR は慎重に
  • バグ修正のみ受け付ける

GitHub

shiguredo/ayame: WebRTC Signaling Server Ayame

ゴール

  • 最新ブラウザに追従し続ける
  • クライアント側のサンプルを用意する
  • Go を利用することで、シグナリングサーバをスケールアップできる
  • Redis を利用することで、シグナリングサーバをスケールアウトできる
  • OpenMomo プロジェクト で利用できる

進捗

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 のみに対応
  • RTCQuicTransport にも対応
    • Signaling に対応
  • Chrome / Firefox / Safari 最新版に対応
  • iOS / Android / React Native のサンプルを提供

互換性

  • AppRTC シグナリングプロトコル互換
  • 認証/認可部分を拡張

動作環境

  • Go
    • 1.11

TODO

  • Redis を利用してスケールアウト可能にする
    • デフォルトでは Redis は不要にする
  • TURN サーバ
    • 設定は Apache License 2.0 で公開する
    • coturn を利用
    • TURN-UDP と TURN-TCP と TURN-TLS を利用
    • ポート番号は標準に準拠する
  • 認証
    • トークン方式を採用を検討
    • スケールアウトする場合は Redis を利用して共有する
    • シグナリング側でウェブフックを利用できるようにする
  • 承認
    • WebSocket 経由での払い出し
    • TURN サーバの Username/Credential はシグナリングサーバによる払い出し
    • Redis を利用する
  • サンプル
    • iOS
      • Swift
    • Android
      • Kotlin
    • React Native
  • WebRTC's Statistics API 対応

サポート

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

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.