Skip to content

Instantly share code, notes, and snippets.

@voluntas voluntas/open_ayame.rst
Last active Aug 16, 2019

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

OpenAyame プロジェクト

日時:2019-08-15
作:時雨堂
バージョン:19.08.6
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 を使うべきと考えています。

互換性

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

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

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

最新版の仕様

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

動作環境

  • Go
    • 1.12

方針

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

ロードマップ

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

ライセンス

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

サポート

時雨堂ではサポートは提供しておりません

  • kdxu (Kyoko KADOWAKI) が有料でのサポートやカスタマイズ、 コンサルティングを提供しています。

メールや Discord 、Twitter などで @kdxu へ連絡をお願いします。

Discord

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

https://discord.gg/mDesh2E

WebRTC シグナリングサービス Ayame Lite

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

シグナリングサーバ URL:wss://ayame-lite.shiguredo.jp/signaling

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

WebRTC シグナリングサービス Ayame Lite 開発ログ

オープンベータテスト

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

Ayame Lite

進捗

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

  • 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 プロジェクト正式スタート
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.