Skip to content

alanmshelly/SkyWay-MultiParty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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>"); /* 相手から受信したメッセージを表示 */
});

サンプルページ

ダウンロード

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' }] }

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。

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

About

This is a library for easy implementation of group video chat.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •