これは複数人でテレビ会議をするためのSDKです。
$ git clone --recursive [email protected]:esperia/meetup.js.git
$ cd meetup.js
$ npm i
$ node server
- サービスにてOrganization IDを取得します。
- 以下のプログラムを書きます。
HTML :
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Simple meetup.js</title>
<script type="text/javascript" src="/js/simplewebrtc.bundle.js"></script>
<script type="text/javascript" src="/js/socket.io.js"></script>
<script type="text/javascript" src="/js/meetup.js"></script>
<script>
var organizationId = '<Organization ID>';
var roomId = '<Room ID>';
var meetup = Meetup.create({
remoteVideosEl: 'remoteVideos',
localVideoEl: 'localVideo',
}).login(organizationId, function(err) {
if (err) return;
meetup.ready(function(err, sessionId) {
if (err) {
console.log('Access denied to Camera and Mic');
return;
}
meetup.joinRoom(roomId, function(err, roomDescription) {
if (err) return;
console.log('Joined room!');
});
});
});
</script>
</head>
<body>
<div id="remoteVideos"></div>
<div id="localVideo"></div>
</body>
</html>
Meetup.js オブジェクトを作成・初期化します。
var meetup = Meetup.create({
// 会話する相手のビデオの一覧が入る要素のIDです。
remoteVideosEl: 'remoteVideos',
// 会話する相手のビデオの一覧が入る要素のIDです。
localVideoEl: 'localVideo',
// ログを出力します。
debug: true,
// コアライブラリのログを出力します。
coreDebug: true,
// getUserMediaメソッドに渡す Constraints を指定します。
peerConnectionContraints: {
optional: [
{DtlsSrtpKeyAgreement: true},
{RtpDataChannels: true}
]
},
});
企業IDを利用してサービスへログインします。
meetup.login(<Organization ID>, <Callback>);
引数 :
- Organization ID
- サービスに登録した時に割り振られたIDを指定します。
- Callback
- サービスへのログイン処理を行った後に実行されるメソッドを指定します。
- function(err) { ... }
- err
- 処理に成功した場合はnull, 失敗した場合はエラーオブジェクトが返ります。
- code
- 1 : 企業IDが空の時。
- err
サーバへ接続します。 また、ユーザへカメラとマイクへのアクセスを要求します。
meetup.ready([<Callback>]);
引数 :
- Callback
- サーバへの接続と、ユーザへのカメラ/マイクへのアクセスを要求します。
- function(err, sessionId) { ... }
- err
- 処理に成功した場合はnull, 失敗した場合はエラーオブジェクトが返ります。
- code
- TODO
- sessionId
- 現在接続しているサーバで固有に割り振られたIDです。自分のチャットルームへのアクセスになります。
- err
指定の会議室へ入室します。
meetup.joinRoom(<Room ID>[, <Callback>]);
引数 :
- Room ID
- ルームIDを指定します。
- Callback
- ルームへ入室処理が終わった際に実行されます。
- function(err, roomDescription) { ... }
- err
- 処理に成功した場合はnull, 失敗した場合はエラーオブジェクトが返ります。
- roomDescription
- 部屋の情報が表示されます。
- err
指定の会議室から退室します。
meetup.leaveRoom([<Callback>]);
引数 :
- Callback
- ルームへ入室処理が終わった際に実行されます。
- function() { ... }
イベントを登録します。
サーバへの接続に失敗した時に呼ばれます。
meetup.on('socketError', function (evt, socket) {
console.log('socket obj', socket);
if (!socket.connected) {
// サーバ接続エラー
}
});
ユーザが喋った時に呼ばれます。
meetup.on('speaking', function (idObj) {
var sessionId = null;
if (idObj) {
sessionId = idObj.id;
} else {
// 自分以外ユーザがいない場合。
}
console.log('speaking', sessionId);
});
ユーザが喋り終わった時に呼ばれます。
meetup.on('stoppedSpeaking', function(event) {
// stopped
});
ユーザが入室した時に呼ばれます。
meetup.on('peerStreamAdded', function(peer) {
console.log('Added peer:', peer);
});
ユーザが退室した時に呼ばれます。
meetup.on('peerStreamRemoved', function(peer) {
console.log('Removed peer:', peer);
});
イベントを削除したいときに呼びます。 イベント名を指定した場合は、複数登録しているイベントをすべて削除します。 登録時の関数オブジェクトを指定した場合は、そのイベントのみを削除します。
meetup.off('peerStreamRemoved');
var func = function() {
// 登録後削除しているので呼ばれません。
};
meetup.on('peerStreamRemoved', func);
meetup.off(func);
自分の音声をミュートにします。
meetup.mute([Callback]);
引数 :
- Callback
- ミュートがサーバに伝わった後に実行されます。
- function() { ... }
自分の音声のミュートを解除します。
meetup.unmute([Callback]);
引数 :
- Callback
- 処理のイベントがサーバに伝わった後に実行されます。
- function() { ... }
自分の動画を一時配信停止します。
meetup.resume([Callback]);
引数 :
- Callback
- 処理のイベントがサーバに伝わった後に実行されます。
- function() { ... }
自分の動画を一時配信停止します。
meetup.resume([Callback]);
引数 :
- Callback
- 処理のイベントがサーバに伝わった後に実行されます。
- function() { ... }
自分の動画を停止すると共に、カメラとマイクのりようを停止します。
meetup.stopLocalVideo([Callback]);
引数 :
- Callback
- 処理のイベントがサーバに伝わった後に実行されます。
- function() { ... }
カメラとマイクの利用を開始し、同時に動画の配信を開始します。
meetup.startLocalVideo([Callback]);
引数 :
- Callback
- 処理のイベントがサーバに伝わった後に実行されます。
- function() { ... }
内部で利用している SimpleWebRTC オブジェクトを取得します。
var simpleWebRTC = meetup.get();
内部で利用している Socket.IO オブジェクトを取得します。
var socketio = meetup.getConnection();
login APIなどにアクセスした際に、コールバック関数の第一引数に渡されるerrオブジェクトは、以下の形式になっています。
/**
* @param {Number} code エラーコードが返ります。エラーコードは、各APIを参照のこと。
* @param {String} message エラーメッセージが返ります。
*/
err = {
code: <エラーコード>,
message: '<エラーメッセージ>'
}
- Git
- Ruby
- Ruby Gems
- sass
- Ruby Gems
- Node.js
- Grunt
$ git clone --recursive [email protected]:esperia/meetup.js.git
$ cd meetup.js
$ npm i
$ grunt default
- Firefox (latest)
- Google Chrome (latest)
MIT License