Giter VIP home page Giter VIP logo

skyway-multiparty's Introduction

Multi Party

日本語 | English

SkyWay( http://nttcom.github.io/skyway/ )を用い、多人数参加のグループビデオチャットを簡単に開発できるライブラリです。

サンプル

// MultiParty インスタンスを生成
multiparty = new MultiParty( {
  "key": "********-****-****-****-************"  /* SkyWay keyを指定 */,
  "reliable": true /* data channel でreliable通信(sctp)を行う */
});

// for MediaStream
//

multiparty.on('my_ms', function(video) {
  // 自分のvideoを表示
  var vNode = MultiParty.util.createVideoNode(video);
  vNode.volume = 0;
  $(vNode).appendTo("#streams");
}).on('peer_ms', function(video) {
  // peerのvideoを表示
  var vNode = MultiParty.util.createVideoNode(video);
  $(vNode).appendTo("#streams");
}).on('ms_close', function(peer_id) {
  // peerが切れたら、対象のvideoノードを削除する
  $("#"+peer_id).remove();
})


// for DataChannel
//

$("button").on('click', function(ev) {
  multiparty.send('hello'); /* 接続中のピアにメッセージを送信 */
});

multiparty.on('message', function(mesg) {
  $("p.receive").append(mesg.data + "<br>"); /* 相手から受信したメッセージを表示 */
});

// サーバとpeerに接続
multiparty.start()

サンプルページ

ダウンロード

APIリファレンス

MultiParty

var multiparty = new MultiParty([options]);
  • options
    • key (string)
      • API key(skywayから取得)。必須
    • room (string)
      • ルーム名。
    • id (string)
      • ユーザID。
    • reliable (boolean)
      • true : データチャンネルで信頼性のあるデータ転送を行う。デフォルト値はfalse。
    • selialization (string)
      • データシリアライゼーションモードを( binary | binary-utf8 | json | none )のいずれかにセットする。デフォルト値はbinary。
    • video (boolean)
      • true : ビデオストリーミングを許可する。デフォルト値はtrue。
    • audio (boolean)
      • true : オーディオストリーミングを許可する。デフォルト値はtrue。
    • polling (boolean)
      • true : サーバポーリングによるユーザリストのチェックを許可する。デフォルト値はtrue。
    • polling_interval (number)
      • ポーリング間隔(msec)を設定する。デフォルト値は3000。
    • debug (number)
      • コンソールに表示されるデバッグログレベルを設定する。
    0 ログを表示ない
    1 エラーだけ表示
    2 エラーと警告だけ表示
    3 すべてのログを表示
    
    • host (string)
      • peerサーバのホスト名。
    • port (number)
      • peerサーバのポート番号。
    • secure (boolean)
      • true: peerサーバとの接続にTLSを使用する。
    • config (object).
      • RTCPeerConnectionに渡されるオプション。ICEサーバの設定を行うことができる。初期値は{ 'iceServers': [{ 'url': 'stun:stun.skyway.io:3478' }] }

start

SkyWayサーバに接続し、peerに接続します。

multiparty.on

各種イベント発生時のコールバックを設定できます。

multiparty.on(event, callback);

'open'

multiparty.on('open', function(myid){ ... });
  • SkyWayサーバとのコネクションが確立した際に発生します。
  • id : 現在のウィンドウのid

'my_ms'

multiparty.on('my_ms', function({"src": <object url>, "id": <myid>}){...});
  • このウィンドウのvideo/audioストリームのセットアップが完了した際に発生します。
  • object url : キャプチャされたストリームのurl。
  • id : 現在のウィンドウのid。

'peer_ms'

multiparty.on('peer_ms', function({"src": <object url>, "id": <peer-id>, "reconnect": <true or false>}){ ... });
  • peerのvideo/audioストリームのセットアップが完了した際に発生します。
  • src : peerのストリームのオブジェクトURL。
  • id : peerのid。
  • reconnect : reconnectメソッドにより再接続された場合はtrueとなる。

'peer_ss'

multiparty.on('peer_ss', function({"src": <object url>, "id": <peer-id>, "reconnect": <true or false>}){ ... });
  • peerのスクリーンキャプチャストリームのセットアップが完了した際に発生します。
  • src : peerのスクリーンキャプチャストリームのオブジェクトURL。
  • id : peerのid。
  • reconnect :

'ms_close'

multiparty.on('ms_close', function(peer-id){ ... });
  • peerのメディアストリームがクローズした際に発生します。
  • peer-id : peerのid。

'ss_close'

multiparty.on('ss_close', function(peer-id){ ... });
  • peerのスクリーンキャストストリームがクローズした際に発生します。
  • peer-id : peerのid。

'dc_open'

multiparty.on('dc_open', function(peer-id){ ... });
  • データチャンネルのコネクションのセットアップが完了した際に発生します。
  • peer-id : peerのid。

'message'

multiparty.on('message', function({"id": <peer-id>, "data": <data>}){ ... });
  • peerからメッセージを受信した際に発生します。
  • peer-id : peerのid。
  • data : 受信したデータ。

'dc_close'

multiparty.on('dc_close', function(peer-id){ ... });
  • データコネクションがクローズした際に発生します。
  • peer-id : peerのid。

'error'

multiparty.on('error', function(error){ ... });
  • エラーが起きたら発生します。
  • error : 発生したErrorオブジェクト。

mute

自分の映像と音声をミュートすることができます。

multiparty.mute({"video": <true of false>, "audio": <true or false>);

unmute

自分の映像と音声をアンミュートすることができます。

multiparty.unmute({"video": <true of false>, "audio": <true or false>);

removePeer

peerのメディアストリームとデータストリームをクローズします。

multiparty.removePeer(peer-id);

send

peerにデータを送信します。

multiparty.send(data);

close

コネクションを全て切断します。

multiparty.close();

startScreenShare

画面共有を開始します。

multiparty.startScreenShare(function(stream){
  // success callback
}, function(err) {
  // error callback
});

stopScreenShare

画面共有を中断します。

multiparty.stopScreenShare();

listAllPeers

接続しているpeerのidを取得します。

multiparty.listAllPeers(function(lists) { ... });

reconnect

なんらかの原因でコネクションが切れてしまったpeerに再接続を行います。

multiparty.reconnect(peer_id, function({"video": <boolean>, "screen": <boolean>, "data": <boolean>}){ ... });

MultiParty.util.createVideoNode

オブジェクトURLからビデオノードを生成できます。

var vNode = MultiParty.util.createVideoNode({"src": object_url, "id": peer_id}){ ... });

LICENSE & Copyright

LICENSE

skyway-multiparty's People

Contributors

kensakukomatsu avatar alanmshelly avatar sakkuru avatar

Watchers

James Cloos avatar seiya avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.