Deprecated!

このドキュメントは、2018年3月に提供を終了するSkyWayの旧SDKのAPIリファレンスです。
旧SDKをご利用の方は、新SDKへの移行をお願いします。 新SDKをご利用の方は、新SDKのAPIリファレンスをご覧ください。

×ばつ

PeerJS docsSkyWay対応版


PeerJSは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。このドキュメントでは、PeerJS APIの基本的な使い方を紹介します。PeerJSを用いた実装例をご覧になりたい方は, サンプル ページを御覧ください。

このドキュメントは、NTTコミュニケーションズが提供するクラウドサービス「SkyWay」にて利用できるようにカスタマイズしたPeerJSを対象としています。

セットアップ

1. PeerJSのクライアントライブラリをインクルード

PeerJSクライアントライブラリをあなたのアプリケーションにインクルードしてください。

<script src="https://skyway.io/dist/0.3/peer.js"></script>

PeerJSライブラリ(peer.js, peer.min.js)はあなたのサーバ上に設置することができます。 ソースコードはGithubからforkする事ができます。

2. Peerオブジェクトを作成

Peerオブジェクトは、Peerコネクションを生成、受信する為に利用します。

var peer = new Peer({key: 'APIKEY'});

Peerのコンストラクタに渡す'APIKEY'は、SkyWayのAPIキーです。APIキーの申し込みを行うことで無料で取得することができます。APIキー申込時には利用ドメインを申請していただきます。APIキーは申請したドメインからのみ利用可能です。

PeerJSのセッション情報交換やシグナリングに利用するサーバを、自身で構築することもできます。 詳しくはpeerjs-serverをご覧ください。

これで利用するための準備はすべて整いました!

使い方

Peerオブジェクトは生成時、ランダムなID(以下、PeerID)が付与されます。

peer.on('open', function(id) {
 console.log('My peer ID is: ' + id);
});

他のPeerと接続したい場合は、接続先のPeerIDが必要になります。 RestAPIを利用して接続先のPeerIDを入手するか、何らかの仕組みでPeerIDを交換してください。Peer constructorのオプションに任意のPeerIDを指定する事もできます。

その他のオプション、メソッド、イベントエラー処理などの詳細は、Peer API リファレンスをお読みください。

Data connections

相手のPeerIDを指定してpeer.connectを実行するとData connectionを開始します。相手から接続要求はいつでもconnection イベントを利用して受け取ることができます。

接続開始
接続イベントの受信
var conn = peer.connect('dest-peer-id');
peer.on('connection', function(conn) { ... });

peer.connectconnectionイベントのコールバックではDataConnectionオブジェクトを提供します。このオブジェクトを使用してデータの送受信を行うことができます。

conn.on('open', function() {
 // メッセージを受信
 conn.on('data', function(data) {
 console.log('Received', data);
 });
 // メッセージを送信
 conn.send('Hello!');
});

メソッドとイベントの詳細は、DataConnection API リファレンスをご覧ください。

Video/audio calls

相手のPeerIDを指定してpeer.callを実行することで、その相手を呼び出すことができます。相手があなたを呼び出した場合、 callイベントが発生します。

callイベントを受信した時は、必ずそのイベントに応答する必要があります。応答しなければ接続は確立しません。

呼び出し開始
呼び出しへの応答
// Call a peer, providing our mediaStream
var call = peer.call('dest-peer-id',
 mediaStream);
peer.on('call', function(call) {
 // Answer the call, providing our mediaStream
 call.answer(mediaStream);
});

相手を呼び出す時、または、呼び出しに応答する時には、MediaStreamを提供する必要があります。 MediaStreamにはビデオストリーム(ウェブカメラの映像)やオーディオストリームなどがあり、navigator.getUserMediaによって取得することができます。取得できる内容はブラウザによってことなります。 尚、呼び出しに応答する時のMediaStreamは必須ではありません。もし応答時にMediaStreamをセットしなければ、一方向の通話が確立されます。 通話が確立されると、openプロパティにtrueがセットされます。

peer.callcall イベントのコールバックではMediaConnectionオブジェクトを提供します。 MediaConnectionオブジェクトはstream イベントをキャッチすることができます。streamイベントのコールバックには相手の映像/音声ストリームが含まれます。

call.on('stream', function(stream) {
 // `stream` is the MediaStream of the remote peer.
 // Here you'd add it to an HTML video/canvas element.
});

詳しくは MediaConnection API reference をご覧ください。

SkyWay RestAPIの使い方

listAllPeers()

APIキー毎のアクティブなPeerIDを取得します。

peer.listAllPeers(function(list){
 //(例)取得したPeerIDリストを配列に格納する
 for(var cnt = 0;cnt < list.length;cnt++){ userList.push(list[cnt]); } }); 

SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。

FAQ

どのような種類のデータを送ることができますか?

PeerJSは BinaryPackシリアライゼーションフォーマットを利用しています。JSONやバイナリBlobs、ArrayBuffersなど様々なデータを簡単な手順で送受信することができます。

conn.send({
 strings: 'hi!',
 numbers: 150,
 arrays: [1,2,3],
 evenBinary: new Blob([1,2,3]),
 andMore: {bool: true}
});

serializationの設定値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

PeerJSを利用することができないシーンはありますか?

シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。 ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、Peerオブジェクトのオプションで設定することができます。

TURNサーバはどのようにして利用するのでしょうか?

Peerオブジェクトを生成する際、オプションのiceServersにURL等の情報を設定してください。

var peer = new Peer({
 config: {'iceServers': [
 { url: 'stun:stun.skyway.io:3478' },
 { url: 'turn:homeo@turn.bistri.com:80', credential: 'homeo' }
 ]} /* Sample servers, please use appropriate ones */
});

尚、SkyWayが提供するTURNサーバを利用する場合は、オプションの設定は不要です。

現在のブラウザ対応状況は?

WebRTC仕様との互換性並びにブラウザの対応状況はこちらをご覧ください。尚、SkyWay対応版のPeerJSについては、動作に差異がある可能性があります。

接続しようとしてるピアに接続できない場合はどうなりますか?

ピアに接続できない場合はPeerServerにて接続要求を5秒間保持します。ピアが一時的に再接続するような場合、コネクションを切らずに保持することができます。

ピアとつながらない場合は何を確認するべきでしょうか?

ピア同士がシンメトリックNATの内側にいる可能性があります。この場合はTURNサーバを利用してください。

ファイアウォール等でUDPのポート3478(STUNサーバへの問い合わせに必要)をブロックしているかもしれません。STUNサーバへの問い合わせが可能な状況でご利用ください。

遅延/帯域幅は?

ピア同士のデータのやり取りは、TURNを利用する場合を除き、サーバを経由しないため、それが原因となる遅延などは発生しません。ピア同士の処理性能やネットワーク環境に依存します。

ピア同士のコネクション確立に関する遅延は、セッション情報の中継(以下、シグナリング)とユーザの識別という2つに分類できます。PeerJSでは、シグナリングの時間を短縮するために、XHRストリーミングリクエストでデータを送った後、WebSocketで送ります。ユーザの識別に関しては手動でIDを指定することで、サーバ側にてIDを生成する際のRTT(Round-Trip delay Time)を短縮することができます。

その他

SkyWay Technical Forum Google Group(日本語/英語)

PeerJS Google Group(英語のみ)

免責事項

本ドキュメントはhttp://peerjs.com/docs/を元に、NTTコミュニケーションズが提供するSkyWayを利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。

API Reference« »

Getting Started

Peer constructorvar peer = new Peer([id], [options]);

他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。

[id] string

他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。

[options] object
key string

クラウド上のPeerServerを利用するためのAPIキーです。

host string

サーバのホスト名です。デフォルトは、skyway.ioです。相対ホスト名として、'/' も許容します。

port number

サーバのポート番号です。デフォルトはホストがskyway.ioの場合は443番で、その他の場合は80番です。

path string

自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。

secure booleanbeta (0.3.0)

SSLを利用する場合は、trueにします。skyway.ioはSSLを利用するため、デフォルトは、trueです。

turn booleanskyway

SkyWayが提供するTURNサーバを利用する場合は、trueにします。デフォルトは、trueです。利用には別途申請が必要です。

config object

RTCPeerConnectionへ渡される設定項目のハッシュです。このハッシュは、カスタマイズされたICE/TURNサーバを含みます。デフォルト値は、{ 'iceServers': [{ 'url': 'stun:stun.skyway.io:3478' }] }です。尚、SkyWayが提供するTURNサーバを利用する場合は、iceServersの指定は不要です。

debug numberbeta (0.3.0)

debugレベルにしたがってログを出力します。デフォルト値は0です。

0

ログを出力しません。

1

エラーのみログ出力します。

2

エラーと警告をログ出力します。

3

すべてのログを出力します。

peer.connect methodvar dataConnection = peer.connect(id, [options]);

idで指定されたリモートのPeerへ接続し、data connectionを返します。コネクションに失敗した場合に備え、errorイベントを設定してください。

id string

リモートpeerのブローカーIDです(リモートpeerのpeer.idです)。

[options] object
label string

data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。

metadata

コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。

serialization string

binary (default), binary-utf8, json, or none を指定可能です。dataConnection.serializationを通じてアクセスできます。binary-utf8はパフォーマンスの低下を引き起こすことがあります。UTF8文字列がbinaryフォーマットにパックされるためです。

reliable boolean

data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはfalseです。true設定は互換性のないブラウザ(Chrome 30とそれ以下)のために、shimを使います。そのため、完全なパフォーマンスを提供できないことがあります。

peer.call methodbeta (0.3.0)var mediaConnection = peer.call(id, stream);

idで指定されたリモートのpeerへ発信し、media connectionを返します。コネクションに失敗した場合に備え、errorイベントを設定してください。

id string

リモートpeerのブローカーID(リモートpeerのpeer.id)です。

stream MediaStream

何らかのストリームです。

peer.on methodpeer.on(event, callback);

peerイベントのリスナを設定します。

'open' eventpeer.on('open', function(id) { ... });

PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。idはブローカーIDです(コンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。

'connection' eventpeer.on('connection', function(dataConnection) { ... });

リモートピアと新しいdata connectionが確立すると発生します。

'call' eventbeta (0.3.0)peer.on('call', function(mediaConnection) { ... });

リモートのpeerがあなたに発信してきたときに発生します。mediaConnectionはこの時点でアクティブではありません。つまり、最初に応答する必要があります(mediaConnection.answer([stream]);)。その後、streamイベントをlistenできます。

'close' eventpeer.on('close', function() { ... });

ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。

'error' eventpeer.on('error', function(err) { ... });

peerに対するエラーは、ほとんど常に致命的であり、peerを破壊します。ソケットから生じるエラーや、PeerConnectionsから生じるエラーは、このイベントに伝えられます。

'browser-incompatible' Errorfatal

利用しようとしているwebRTC機能のすべて、またはいくつかについて、クライアントのブラウザがサポートしていません。

'invalid-id' Errorfatal

Peerコンストラクタへ渡されたIDに、不正な文字が含まれています。

'invalid-key' Errorfatal

Peerコンストラクタへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。

'unavailable-id' Errorfatal

Peerコンストラクタへ渡されたIDは既に利用されています。

'ssl-unavailable' Errorfatal

PeerJSはsecureな状態を利用しますが、クラウド上のサーバはSSLをサポートしていません。独自のPeerServerを利用してください。

'server-disconnected' Error

既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。

'server-error' Errorfatal

サーバに到達できません。

'socket-error' Errorfatal

ソケットからのエラーです。

'socket-closed' Errorfatal

ソケットが予期せずクローズしました。

peer.disconnect methodpeer.disconnect();

サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。peer.destroyedtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。

peer.destroy methodpeer.destroy();

サーバへの接続をクローズし、すべての既存のコネクションを終了します。peer.destroyedtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。

peer.listAllPeers methodskywaypeer.listAllPeers(function(list) { ... });

SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。listはArray形式で得られます。

peer.id string

peerのブローカーIDです。もしIDがconstructorで指定されない場合、openが発生するまで、undefinedのままです。

peer.connections object

リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。

peer.disconnected boolean

PeerServerとのアクティブなコネクションがある場合は、false です。

peer.destroyed boolean

このpeerにおける、全接続が利用されていない場合はtrueです。

DataConnection class

WebRTCのData Channelをラップします。このオブジェクトを得るためには、peer.connectを使うか、connectイベントをlistenしてください

.send methoddataConnection.send(data);

デフォルトで、data はBinaryPackでシリアライズされて、リモートのピアで送信されます。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

data

送信するデータです。

.close methoddataConnection.close();

DataChannelとPeerConnectionを解放して、コネクションをクローズします。

.on methoddataConnection.on(event, callback);

data connectionイベントのリスナを設定します。

'data' eventdataConnection.on('data', function(data) { ... });

リモートpeerからデータを受信した場合に発生します。

'open' eventdataConnection.on('open', function() { ... });

コネクションが利用可能となった場合に発生します。

'close' eventdataConnection.on('close', function() { ... });

あなたが、またはリモートのpeerがdata connectionをクローズした場合に発生します。Firefoxはこのイベントをまだサポートしていません。

'error' eventdataConnection.on('error', function(err) { ... });
.bufferSize number

ブラウザのバッファが一杯になった場合に、キューされるメッセージのサイズです。

.dataChannel object

コネクションに関連付けされたRTCDataChannelオブジェクトへの参照です。

.label string

コネクションが開始されたときにPeerJSからアサインされる、または指定されるオプションのラベルです。

.metadata

コネクションが開始されたときに、コネクションと関連付けされるメタデータです。

.open boolean

コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。

.peerConnection object

コネクションに関連付けされる、RTCPeerConnectionへの参照です。

.peer string

コネクションの相手側のpeer IDです。

.reliable boolean

信頼性のあるdata channelの場合にtrueです。コネクションの開始時に定義されます。

.serialization string

コネクションを通じて送信されるデータのserializeフォーマットです。binary (デフォルト値)、 binary-utf8json、 または none となります。

.type string

data connectionでは、常に'data'が設定されます。

MediaConnection classbeta (0.3.0)

WebRTCのmedia streamをラップします。このオブジェクトを得るためには、peer.callを使うか、callイベントをlistenしてください。

.answer methodmediaConnection.answer([stream]);

callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにて.answerを呼び出せます。また、オプションで自身のmedia streamを設定できます。

[stream] MediaStream

getUserMediaから取得できるWebRTCのmedia streamです。

.close methodmediaConnection.close();

media connectionをクローズします。

.on methodmediaConnection.on(event, callback);

media connectionイベントのリスナを設定します。

'stream' eventmediaConnection.on('stream', function(stream) { ... });

リモートのpeerがstreamを追加したときに発生します。

'close' eventmediaConnection.on('close', function() { ... });

あなたかリモートのpeerがmedia connectionをクローズした時に発生します。Firefoxはこのイベントをまだサポートしていません。

'error' eventmediaConnection.on('error', function(err) { ... });
.open boolean

media connectionがアクティブなとき(例えば、呼び出しにたいして、応答があった後)に、trueとなります。もし片方向通話のために、最大待ち時間を設定したい場合に、これをチェックできます。

.metadata

コネクションが開始されたときに、コネクションと関連付けされるメタデータです。

.peer string

コネクションの相手側のpeer IDです。

.type string

media connectionでは、常に'media'が設定されます。

util objectutility

多数の有用なユーティリティを提供します。ここで記載されているutlitiesのみutilで保証されます。ここに記載されないutilitiesは予告なく除去されることがあります。これらを、私達は'大きな変更'とは考えません。

.browser stringif (util.browser === 'Firefox') { /* OK to peer with Firefox peers. */ }

利用中のブラウザを返します。このプロパティは、2つのピアの接続可否を決定する際に有用です。例えば、data connectionsはメジャーなブラウザ間では、まだ相互接続が現時点ではできません。util.browserは現在、'Firefox'、'Chrome'、'Unsupported'、'Supported'(WebRTC互換している不明なブラウザ)の値を持ちます。

.supports objectif (util.supports.data) { /* OK to start a data connection. */ }

利用中のブラウザにて機能がサポートされているか、WebRTCの機能ごとにマップされるハッシュです。util.supportsは、ここで記載されているプロパティのみ保証します。

.audioVideo boolean

利用中のブラウザが、media streamとPeerConnectionをサポートしている場合にtrueとなります。

.data boolean

利用中のブラウザが、DataChannelとPeerConnectionをサポートしている場合にtrueとなります。

.binary boolean

利用中のブラウザが、binary DataChannelをサポートしている場合にtrueとなります。

.reliable boolean

利用中のブラウザが、信頼性のあるDataChannelをサポートしている場合にtrueとなります。

SkyWay iOS SDK docs


SkyWayは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。「SkyWay iOS SDK」はSkyWayをiOSから利用できるフレームワークです。このドキュメントでは、SkyWay iOS SDKの基本的な使い方を紹介します。SkyWay iOS SDKを用いた実装例をご覧になりたい方は, サンプルアプリ を御覧ください。

セットアップ

1. 必要なライブラリ、フレームワークを追加

下記のライブラリ、フレームワークをXcodeプロジェクトに追加してください。

AudioToolbox.framework
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
VideoToolbox.framework
CoreGraphics.framework
Foundation.framework
GLKit.framework
SystemConfiguration.framework
libc++.tbd
libstdc++.6.0.9.tbd
libsqlite3.tbd
libicucore.tbd

2. SkyWay iOS SDKのインポート

SkyWay.frameworkをXcodeプロジェクトに追加後、SkyWay iOS SDKのヘッダファイルをインポートしてください。また、Build SettingsのLinking> Other Linker Flagsに-ObjCが設定されているか確認してください。

#import <SkyWay/SKWPeer.h>

(注記)現在Bitcodeには内部ライブラリの関係上、対応しておりません。Xcode7以上をお使いの方は、Build SettingsのBuild Options> Enable BitcodeをNOに設定してください。

3. SKWPeerオブジェクトを作成

SKWPeerオブジェクトは、Peerコネクションを生成、受信する為に利用します。

SKWPeerOption* options = [[SKWPeerOption alloc] init];
options.key = @"{APIKEY}";
options.domain = @"{DOMAIN}";
SKWPeer* peer = [[SKWPeer alloc] initWithOptions:options];

SKWPeerのコンストラクタに渡す'APIKEY'は、SkyWayのAPIキーです。APIキーの申し込みを行うことで無料で取得することができます。APIキー申込時には利用ドメインを申請していただきます。APIキーは申請したドメインからのみ利用可能です。

セッション情報交換やシグナリングに利用するサーバを、自身で構築することもできます。 詳しくはpeerjs-serverをご覧ください。

これで利用するための準備はすべて整いました!

使い方

SKWPeerオブジェクトは生成時、ランダムなID(以下、PeerID)が付与されます。

[peer on:SKW_PEER_EVENT_OPEN callback:^(NSObject* obj)
{
 if (YES == [obj isKindOfClass:[NSString class]])
 {
 NSString* ownId = (NSString *)obj;
 }
}];

他のPeerと接続したい場合は、接続先のPeerIDが必要になります。 SKWPeerクラスのlistAllPeersメソッドを用いて接続先のPeerIDを入手するか、何らかの仕組みでPeerIDを交換してください。SKWPeerコンストラクタのオプションに任意のPeerIDを指定する事もできます

その他のオプション、メソッド、イベントエラー処理などの詳細は、Peer API リファレンスをお読みください。

Data connections

相手のPeerIDを指定してSKWPeerのconnectWithIdメソッドを実行するとdata connectionを開始します。相手から接続要求はいつでもSKW_PEER_EVENT_CONNECTIONイベントを利用して受け取ることができます。

接続開始
SKWDataConnection* dataConnection = [peer connectWithId:'dest-peer-id'];
接続イベントの受信
[peer on:SKW_PEER_EVENT_CONNECTION callback:^(NSObject* dataConnection){ ... }];

SKWPeerのconnectWithIdメソッドとSKW_PEER_EVENT_CONNECTIONイベントのコールバックではSKWDataConnectionオブジェクトを提供します。このオブジェクトを使用してデータの送受信を行うことができます。

[dataConnection on:SKW_DATACONNECTION_EVENT_OPEN callback:^(NSObject* obj){ ... }];
[dataConnection on:SKW_DATACONNECTION_EVENT_DATA callback:^(NSObject* obj)
{
 //文字列データの受信
 NSString* strData = nil;
 if ([obj isKindOfClass:[NSString class]])
 {
 strData = (NSString *)obj;
 }
}];
// メッセージを送信
BOOL bResult = [dataConnection send:@"Hello SkyWay!"];
if (NO == bResult)
{
 // 送信失敗
}
else
{
 // 送信成功
}
 

メソッドとイベントの詳細は、DataConnection API リファレンスをご覧ください。

Video/audio calls

相手のPeerIDを指定してSKWPeerのcallWithIdメソッドを実行することで、その相手を呼び出すことができます。相手があなたを呼び出した場合、 SKW_PEER_EVENT_CALLイベントが発生します。

SKW_PEER_EVENT_CALLイベントを受信した時は、必ずそのイベントに応答する必要があります。応答しなければ接続は確立しません。

呼び出し開始
SKWMediaConnection* mediaConnection = [peer callWithId:dest-peer-id stream:mediaStream];
呼び出しへの応答
[peer on:SKW_PEER_EVENT_CALL callback:^(NSObject* mediaConnection){
 [mediaConnection answer:mediaStream];
}];

相手を呼び出す時、または、呼び出しに応答する時には、SKWMediaStreamを提供する必要があります。 SKWMediaStreamにはビデオストリーム(カメラの映像)やオーディオストリームなどがあり、SKWNavigatorのgetUserMediaメソッドによって取得することができます。 尚、呼び出しに応答する時のSKWMediaStreamは必須ではありません。もし応答時にSKWMediaStreamをセットしなければ、一方向の通話が確立されます。 通話が確立されると、isOpenプロパティにYESがセットされます。

SKWPeerのcallWithIdSKW_PEER_EVENT_CALLイベントのコールバックではSKWMediaConnectionオブジェクトを提供します。 SKWMediaConnectionオブジェクトはSKW_MEDIACONNECTION_EVENT_STREAM イベントをキャッチすることができます。SKW_MEDIACONNECTION_EVENT_STREAMイベントのコールバックには相手の映像/音声ストリームが含まれます。

[mediaConnection on:SKW_MEDIACONNECTION_EVENT_STREAM callback:^(NSObject* stream)
{
 // 'stream' は接続先のSKWMediaStreamです。
 // ここでSKWVideoに追加
}];

詳しくは MediaConnection API reference をご覧ください。

SkyWay RestAPIの使い方

listAllPeers

APIキー毎のアクティブなPeerIDを取得します。

[peer listAllPeers:^(NSArray* aryPeers)
{
 for (NSString* strPeer in aryPeers)
 {
 ...
 }
}];

SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。

FAQ

どのような種類のデータを送ることができますか?

SkyWay iOS SDKはserializationをbinaryまたはbinary-utf8にした場合、MessagePackシリアライゼーションフォーマットを利用します。NSData*,NSString*,NSNumber*,NSDictionary*,NSArray*を簡単な手順で送受信することができます。

NSDictionary* dctData = @{
 @"1": @"one",
 @"2": @"two",
 @"3": @"three",
 @"4": @"four",
 @"5": @"five",
 };
BOOL bResult = [_dataConnection send:dctData];

serializationの設定値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

SkyWay iOS SDKを利用することができないシーンはありますか?

シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。 ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、SKWPeerコンストラクタのオプションで設定することができます。

TURNサーバはどのようにして利用するのでしょうか?

SKWPeerオブジェクトを生成する際、SKWPeerOption内のconfigプロパティにおいてSKWIceConfigオブジェクトにURL等の情報を設定してください。

SKWIceConfig* configStun = [[SKWIceConfig alloc] init];
configStun.url = @"stun:stun.skyway.io:3478";
SKWIceConfig* configTurn = [[SKWIceConfig alloc] init];
configTurn.url = @"turn:homeo@turn.bistri.com:80";
configTurn.credential = @"homeo";
//設定例はサンプルです。利用時には適切なサーバを設定してください。
SKWPeerOption* options = [[SKWPeerOption alloc] init];
option.config = @[configStun,configTurn];
SKWPeer* peer = [[SKWPeer alloc] initWithOptions:options];

尚、SkyWayが提供するTURNサーバを利用する場合は、オプションの設定は不要です。

接続しようとしてるピアに接続できない場合はどうなりますか?

ピアに接続できない場合はPeerServerにて接続要求を5秒間保持します。ピアが一時的に再接続するような場合、コネクションを切らずに保持することができます。

ピアとつながらない場合は何を確認するべきでしょうか?

ピア同士がシンメトリックNATの内側にいる可能性があります。この場合はTURNサーバを利用してください。

ファイアウォール等でUDPのポート3478(STUNサーバへの問い合わせに必要)をブロックしているかもしれません。STUNサーバへの問い合わせが可能な状況でご利用ください。

遅延/帯域幅は?

ピア同士のデータのやり取りは、TURNを利用する場合を除き、サーバを経由しないため、それが原因となる遅延などは発生しません。ピア同士の処理性能やネットワーク環境に依存します。

ピア同士のコネクション確立に関する遅延は、セッション情報の中継(以下、シグナリング)とユーザの識別という2つに分類できます。PeerJSでは、シグナリングの時間を短縮するために、XHRストリーミングリクエストでデータを送った後、WebSocketで送ります。ユーザの識別に関しては手動でIDを指定することで、サーバ側にてIDを生成する際のRTT(Round-Trip delay Time)を短縮することができます。

対応OS

iOS 7+

動作確認機種

iPhone 5+、iPodTouch 6+、iPad 2+

その他

SkyWay Technical Forum Google Group(日本語/英語)

免責事項

本ドキュメントはhttp://peerjs.com/docs/を元に、NTTコミュニケーションズが提供するSkyWayを利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。

API Reference« »

Getting Started

SKWPeer CLASSSKWPeer* peer = [[SKWPeer alloc] initWithId:peerId options:options];
SKWPeer* peer = [[SKWPeer alloc] initWithOptions:options];

他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。

[peerId] NSString

他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。

options SKWPeerOption">SKWPeerOption

設定情報オブジェクトを指定します。

connectWithId METHODSKWDataConnection* dataConnection = [peer connectWithId:peerId];
SKWDataConnection* dataConnection = [peer connectWithId:peerId options:options];

idで指定されたリモートのPeerへ接続し、SKWDataConnectionを返します。コネクションに失敗した場合は、errorイベントが呼び出されます。

peerId NSString

リモートpeerのブローカーIDです(リモートpeerのidentityです)。

[options] SKWConnectOption">SKWConnectOption

設定情報オブジェクトを指定します。

callWithId SKWMediaConnection* mediaConnection = [peer callWithId:peerId stream:stream];
SKWMediaConnection* mediaConnection = [peer callWithId:peerId stream:stream options:options];

idで指定されたリモートのpeerへ発信し、SKWMediaConnectionを返します。コネクションに失敗した場合に備え、errorイベントが発生します。

peerId NSString

リモートpeerのブローカーID(リモートpeerのidentity)です。

stream SKWMediaStream">SKWMediaStream

使用するローカルメディアストリームです。

[options] SKWCallOption">SKWCallOption

設定情報オブジェクトを指定します。

on METHOD[peer on:event callback:^(NSObject* obj)callback];

SKWPeerのイベントコールバックBlockを設定します。

event SKWPeerEventEnum

設定するイベント種別を指定します。

SKW_PEER_EVENT_OPEN [peer on:SKW_PEER_EVENT_OPEN callback:^(NSObject* ownId){ ... }];

PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。ownIdはブローカーIDです(SKWPeerコンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。

SKW_PEER_EVENT_CONNECTION [peer on:SKW_PEER_EVENT_CONNECTION callback:^(NSObject* dataConnection){ ... }];

リモートピアと新しいdata connectionが確立すると発生します。callbackの引数はSKWDataConnectionクラスになります。

SKW_PEER_EVENT_CALL [peer on:SKW_PEER_EVENT_CALL callback:^(NSObject* mediaConnection){ ... }];

リモートのpeerがあなたに発信してきたときに発生します。callbackの引数はSKWMediaConnectionクラスになります。mediaConnectionはこの時点でアクティブではありません。つまり、最初に応答する必要があります([mediaConnection answer:stream];)。その後、streamイベントをlistenできます。

SKW_PEER_EVENT_CLOSE [peer on:SKW_PEER_EVENT_CLOSE callback:^(NSObject* obj){ ... }];

ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。

SKW_PEER_EVENT_DISCONNECTED [peer on:SKW_PEER_EVENT_DISCONNECTED callback:^(NSObject* obj){ ... }];

ピアとの接続がdisconnectedとなった場合に発生します。

SKW_PEER_EVENT_ERROR [peer on:SKW_PEER_EVENT_ERROR callback:^(NSObject* obj){ ... }];

callbackの引数はSKWPeerErrorクラスになります。peerに対するエラーは、ほとんど常に致命的であり、peerを破壊します。ソケットから生じるエラーや、PeerConnectionsから生じるエラーは、このイベントに伝えられます。

callback

イベント発生時に実行するBlockを設定します。

disconnect METHOD[peer disconnect];

サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。disconnectedtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。

reconnect METHOD[peer reconnect];

シグナリングサーバとの再接続を行います。 peerIDは既に割当済みのIDを使用します。disconnectされたピアのみ再接続が可能で、destroyされたピアは再接続できません。

destroy METHOD[peer destroy];

サーバへの接続をクローズし、すべての既存のコネクションを終了します。destroyedtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。

listAllPeers METHOD[peer listAllPeers:^(NSArray* aryPeers){ ... }];

SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。NSStringのNSArrayが渡されます。

identity NSString

peerのブローカーIDです。もしIDがSKWPeerクラスで指定されない場合、openが発生するまで、undefinedのままです。

connections NSMutableDictionary

コネクション接続管理オブジェクトです。リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。

isDisconnected BOOL

PeerServerとのアクティブなコネクションがある場合は、NO です。

isDestroyed BOOL

このpeerにおける、全接続が利用されていない場合はYESです。

SKWPeerOption CLASSSKWPeerOption* options = [[SKWPeerOption alloc] init];

SKWPeer初期化時のオプション設定情報クラスです。

key NSString

クラウド上のPeerServerを利用するためのAPIキーです。

domain NSString

SkyWayでの開発者登録時に指定したWebサーバのドメイン文字列を指定します。

[host] NSString

サーバのホスト名です。デフォルトはskyway.ioとなります。

[port] NSInteger

サーバのポート番号です。デフォルトは443番となります。

[path] NSString

自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。

[secure] BOOL

SSLを利用する場合は、YESにします。skyway.ioはSSLを利用するため、デフォルトは、YESです。

[turn] BOOL

SkyWayが提供するTURNサーバを利用する場合は、YESにします。デフォルトは、YESです。利用には別途申請が必要です。

[config] NSArray

STUN/TURNサーバ設定オブジェクトSKWIceConfigのNSArray*を設定します。デフォルトでは、SkyWayのSTUNサーバ(stun:stun.skyway.io:3478)が設定されています。尚、SkyWayが提供するTURNサーバを利用する場合は、TURNサーバについての記載は不要です。

[debug] SKWDebugLevelEnum

debugレベルにしたがってログを出力します。デフォルト値はSKW_DEBUG_LEVEL_NO_LOGSです。

SKW_DEBUG_LEVEL_NO_LOGS

ログを出力しません。

SKW_DEBUG_LEVEL_ONLY_ERROR

エラーのみログ出力します。

SKW_DEBUG_LEVEL_ERROR_AND_WARNING

エラーと警告をログ出力します。

SKW_DEBUG_LEVEL_ALL_LOGS

すべてのログを出力します。

SKWIceConfig CLASSSKWIceConfig* config = [[SKWIceConfig alloc] init];

SKWPeer初期化時のSTUN/TURNサーバ設定情報クラスです。

url NSString

STUN/TURN サーバの URL を指定します。

[username] NSString

ユーザー名が必要な場合に設定します。

[credential] NSString

パスワードが必要な場合に設定します。

SKWConnectOption CLASSSKWConnectOption* options = [[SKWConnectOption alloc] init];

SKWPeerのconnect実行時のオプション設定情報クラスです。

label NSString

data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。

metadata NSString

コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。

serialization SKWSerializationEnum

データ通信形式を指定します。デフォルトで SKW_SERIALIZATION_BINARYが設定されます。この値によってdataConnection.sendで送れるデータ型が変化します。dataConnection.serializationにて確認できます。

SKW_SERIALIZATION_BINARY

データ通信形式をbinaryにします。

SKW_SERIALIZATION_BINARY_UTF8

データ通信形式をbinary-utf8にします。

SKW_SERIALIZATION_JSON

データ通信形式をjsonにします。

SKW_SERIALIZATION_NONE

データ通信形式をnoneにします。

reliable BOOL

data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはNOです。

SKWCallOption CLASSSKWCallOption* options = [[SKWCallOption alloc] init];

SKWPeerのcall実行時のオプション設定情報クラスです。

metadata NSString

コネクションと関連付けされるメタデータ文字列です。

SKWPeerError CLASS

"error"イベント時に取得できるクラスです。OS からのエラー情報が存在した場合、エラー情報オブジェクトがプロパティerrorに参照されます。

type SKWPeerErrorEnum

列挙型のエラータイプが設定されます。

SKW_PEER_ERR_NO_ERROR Errorfatal

エラーがない状態です

SKW_PEER_ERR_BROWSER_INCOMPATIBLE Errorfatal

利用しようとしているwebRTC機能のすべて、またはいくつかについて、サポートしていません。

SKW_PEER_ERR_INVALID_ID Errorfatal

SKWPeerクラスへ渡されたIDに、不正な文字が含まれています。

SKW_PEER_ERR_INVALID_KEY Errorfatal

SKWPeerクラスへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。

SKW_PEER_ERR_UNAVAILABLE_ID Errorfatal

SKWPeerクラスへ渡されたIDは既に利用されています。

SKW_PEER_ERR_SSL_UNAVAILABLE Errorfatal

SSL関連のエラーです。

SKW_PEER_ERR_DISCONNECTED Error

既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。

SKW_PEER_ERR_SERVER_ERROR Errorfatal

サーバに到達できません。

SKW_PEER_ERR_SOCKET_ERROR Errorfatal

ソケットからのエラーです。

SKW_PEER_ERR_SOCKET_CLOSED Errorfatal

ソケットが予期せずクローズしました。

SKW_PEER_ERR_NETWORK Errorfatal

シグナリングサーバとのネットワークエラーです。

SKW_PEER_ERR_PEER_UNAVAILABLE Errorfatal

接続できないPeerに接続しようとしています。

SKW_PEER_ERR_WEBRTC Errorfatal

WebRTC関連での何からのエラーです。

message NSString

エラーメッセージです。

error NSError

OSからのエラー情報オブジェクトです。

SKWDataConnection CLASS

WebRTCのData Channelをラップします。このオブジェクトを得るためには、SKWPeerのconnectWithIdを使うか、SKW_PEER_EVENT_CONNECTION発生時に渡されるオブジェクトを使用してください。

send METHODBOOL bResult = [dataConnection send:data];

接続中のリモートピアにデータを送信します。プロパティserializationの値によって送信処理が変わります。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

data

送信するデータを設定します。

close METHOD[dataConnection close];

DataChannelとPeerConnectionを解放して、コネクションをクローズします。

on METHOD[dataConnection on:event callback:^(NSObject* obj)callback];

SKWDataConnectionのイベントコールバックBlockを設定します。

event SKWDataConnectionEventEnum

設定するイベント種別を指定します。

SKW_DATACONNECTION_EVENT_DATA [dataConnection on:SKW_DATACONNECTION_EVENT_DATA callback:^(NSObject* obj){ ... }];

リモートpeerからデータを受信した場合に発生します。

SKW_DATACONNECTION_EVENT_OPEN [dataConnection on:SKW_DATACONNECTION_EVENT_OPEN callback:^(NSObject* obj){ ... }];

コネクションが利用可能となった場合に発生します。

SKW_DATACONNECTION_EVENT_CLOSE [dataConnection on:SKW_DATACONNECTION_EVENT_CLOSE callback:^(NSObject* obj){ ... }];

あなたが、またはリモートのpeerがdata connectionをクローズした場合に発生します。

SKW_DATACONNECTION_EVENT_ERROR [dataConnection on:SKW_DATACONNECTION_EVENT_ERROR callback:^(NSObject* obj){ ... }];

callbackの引数はSKWPeerErrorクラスになります。

callback

イベント発生時に実行するBlockを設定します。

bufferSize NSUInteger

バッファが一杯になった場合に、キューされるメッセージのサイズです。

dataChannel SKWDataChannel">SKWDataChannel

コネクションに関連付けされたRTCDataChannelオブジェクトへの参照です。

label NSString

コネクションが開始されたときにアサインされる、または指定されるオプションのラベルです。

metadata NSString

コネクションが開始されたときに、コネクションと関連付けされるメタデータです。

isOpen BOOL

コネクションがopenであり、読み込み/書き込みの準備ができている場合にYESになります。

peerConnection RTCPeerConnection

コネクションに関連付けされる、RTCPeerConnectionオブジェクトです。

peer NSString

コネクションの相手側のpeer IDです。

reliable BOOL

信頼性のあるdata channelの場合はYESです。コネクションの開始時に定義されます。

serialization SKWSerializationEnum

コネクションを通じて送信されるデータのserializeフォーマットです。コネクションの開始時に定義されます

SKW_SERIALIZATION_BINARY

データ通信形式がbinaryの時にこの値が返されます。

SKW_SERIALIZATION_BINARY_UTF8

データ通信形式がbinary-utf8の時にこの値が返されます。

SKW_SERIALIZATION_JSON

データ通信形式がjsonの時にこの値が返されます。

SKW_SERIALIZATION_NONE

データ通信形式がnoneの時にこの値が返されます。

type NSString

data connectionでは、常に'data'が設定されます。

SKWMediaConnection CLASS

WebRTCのmedia streamをラップします。このオブジェクトを得るためには、SKWPeerのcallWithIdを使うか、SKW_PEER_EVENT_CALL発生時に渡されるオブジェクトを使用してください。

answer METHOD[mediaConnection answer];
[mediaConnection answer:stream];

callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにてanswerを呼び出せます。また、オプションで自身のmedia streamを設定できます。

[stream] SKWMediaStream">SKWMediaStream

SKWNavigatorのgetUserMediaによって取得されるSKWMediaStreamです。

close METHOD[media close];

media connectionをクローズします。

on METHOD[mediaConnection on:event callback:^(NSObject* obj)callback];

SKWMediaConnectionのイベントコールバックBlockを設定します。

event SKWMediaConnectionEnum

設定するイベント種別を指定します。

SKW_MEDIACONNECTION_EVENT_STREAM [mediaConnection on:SKW_MEDIACONNECTION_EVENT_STREAM callback:^(NSObject* stream){ ... }];

リモートのpeerがstreamを追加したときに発生します。

SKW_MEDIACONNECTION_EVENT_CLOSE [mediaConnection on:SKW_MEDIACONNECTION_EVENT_CLOSE callback:^(NSObject* obj){ ... }];

あなたか、リモートのpeerがmedia connectionをクローズした時に発生します。

SKW_MEDIACONNECTION_EVENT_ERROR [mediaConnection on:SKW_MEDIACONNECTION_EVENT_ERROR callback:^(NSObject* obj){ ... }];

callbackの引数はSKWPeerErrorクラスになります。

callback

イベント発生時に実行するBlockを設定します。

isOpen BOOL

media connectionがアクティブなとき(例えば、呼び出しにたいして、応答があった後)に、YESとなります。もし片方向通話のために、最大待ち時間を設定したい場合に、これをチェックできます。

metadata NSString

コネクションが開始されたときに、コネクションと関連付けされるメタデータです。

peer NSString

コネクションの相手側のpeer IDです。

type NSString

media connectionでは、常に'media'が設定されます。

SKWMediaStream CLASS
close METHOD[stream close];

メディアストリームをすべて閉じます。

getVideoTracks METHODNSUInteger videos = [stream getVideoTracks];

メディアストリームに追加されているビデオトラック数を取得します。

setEnableVideoTrack METHOD[stream setEnableVideoTrack:pos enable:enable];

メディアストリームに追加済みのビデオトラック再生状態を設定します。

pos NSUInteger

ビデオトラック番号 (0以上の整数)を選択します。

enable BOOL

YESなら再生し、NOなら停止します

getEnableVideoTrack METHODBOOL enable = [stream getEnableVideoTrack:pos];

メディアストリームに追加済みのビデオトラック再生状態を取得します。

pos NSUInteger

ビデオトラック番号 (0以上の整数)を選択します。

getAudioTracks METHODNSUInteger audios = [stream getAudioTracks];

メディアストリームに追加されているオーディオトラック数を取得します。

setEnableAudioTrack METHOD[stream setEnableAudioTrack:pos enable:enable];

メディアストリームに追加済みのオーディオトラック再生状態を設定します。

pos NSUInteger

オーディオトラック番号 (0以上の整数)を選択します。

enable BOOL

YESなら再生し、NOなら停止します

getEnableAudioTrack METHODBOOL enable = [stream getEnableAudioTrack:pos];

メディアストリームに追加済みのオーディオトラック再生状態を取得します。

pos NSUInteger

オーディオトラック番号 (0以上の整数)を選択します。

setCameraPosition METHODBOOL result = [stream setCameraPosition:pos];

ローカルiOSデバイスのメディアストリームの場合、カメラ位置を設定します。

pos SKWCameraPositionEnum

使用するカメラの位置を設定します

SKW_CAMERA_POSITION_UNSPECIFIED

一番始めに見つけたカメラを使用します。順序はシステムに依存します。

SKW_CAMERA_POSITION_BACK

アウトカメラを使用します。

SKW_CAMERA_POSITION_FRONT

インカメラを使用します。

getCameraPosition METHODSKWCameraPositionEnum pos = [stream getCameraPosition];

ローカルiOSデバイスのメディアストリームの場合、現在のカメラ位置を取得します。

pos SKWCameraPositionEnum

現在のカメラの位置です。

SKW_CAMERA_POSITION_UNSPECIFIED

カメラの位置が不明です。

SKW_CAMERA_POSITION_BACK

アウトカメラです。

SKW_CAMERA_POSITION_FRONT

インカメラです。

switchCamera METHODBool result = [stream switchCamera];

ローカルiOSデバイスのメディアストリームの場合、可能であればカメラの切替を行います。カメラが変更された場合はtrue、それ以外はfalseを返します。

SKWVideo OBJECTSKWVideo* video = [[SKWVideo alloc] initWithFrame:(CGRect)rect];

映像を表示するレンダラービュー オブジェクトです。

addSrc METHOD[video addSrc:stream track:trackNo];

メディアソースとして、 指定のメディアストリーム・トラック番号を追加します。

stream SKWMediaStream">SKWMediaStream

追加するメディアストリームです。

trackNo NSUInteger

追加するビデオトラック番号 (0以上の整数)です。

removeSrc METHOD[video removeSrc:stream track:trackNo];

メディアソースとして使用していたメディアストリーム・トラック番号を削除します。

stream SKWMediaStream">SKWMediaStream

削除するメディアストリームです。

trackNo NSUInteger

削除するビデオトラック番号 (0以上の整数)です。

setDidChangeVideoSizeCallback METHOD[video setDidChangeVideoSizeCallback:^(CGSize size)callback

映像サイズが変更された場合に、呼ばれるコールバックを設定します。

callback

イベント発生時に実行するBlockを設定します。

SKWNavigator CLASS

映像を取得するためのクラスです。

initialize METHOD[SKWNavigator initialize:peer];

初期化を行います。

peer SKWPeer">SKWPeer

作成・初期化済みのSKWPeerオブジェクト

terminate METHOD[SKWNavigator terminate];

終了化を行います。

getUserMedia METHODSKWMediaStream* stream = [SKWNavigator getUserMedia:constraints];

ローカルメディアストリームを取得します。

constraints SKWMediaConstraints">SKWMediaConstraints

メディアストリームの設定です。

SKWMediaConstraints CLASS

SKWNavigatorのgetUserMedia実行時のオプション設定クラスです。

videoFlag BOOL

映像使用を設定します。YESなら映像を有効に、NOなら映像を無効にします。デフォルトはYESです。

audioFlag BOOL

音声使用を設定します。YESなら音声を有効に、NOなら音声を無効にします。デフォルトはYESです。

cameraMode SKWCameraModeEnum

カメラモードを設定します。デフォルトはSKW_CAMERA_MODE_SWITCHABLEです。

SKW_CAMERA_MODE_SWITCHABLE

メディアストリームを送信中にカメラの切り替えが可能です。

SKW_CAMERA_MODE_ADJUSTABLE

カメラのwidth/heightを変更可能です。

cameraPosition SKWCameraPositionEnum

使用するカメラの位置を設定します。デフォルトはSKW_CAMERA_POSITION_FRONTです。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。

SKW_CAMERA_POSITION_UNSPECIFIED

一番始めに見つけたカメラを使用します。順序はシステムに依存します。

SKW_CAMERA_POSITION_BACK

アウトカメラを使用します。アウトカメラが見つからない場合は、一番始めに見つけたカメラを使用します。

SKW_CAMERA_POSITION_FRONT

インカメラを使用します。インカメラが見つからない場合は、一番始めに見つけたカメラを使用します。

maxWidth NSUInteger

横ピクセル上限を設定します。デフォルトは640となります。
maxWidth, minWidth, maxHeight, minHeightで指定できる有効値は、以下のようになります。正しい値、組み合わせでなかった時は、デフォルト値が適用されます。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。max(Width x Height): 640x480, 352x288
min (Width x Height): 192x144, 352x288, 512x384, 640x480

minWidth NSUInteger

横ピクセル下限を設定します。デフォルトは192となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。

maxHeight NSUInteger

縦ピクセル上限を設定します。デフォルトは480となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。

minHeight NSUInteger

縦ピクセル下限を設定します。デフォルトは144となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。

SkyWay Android SDK docs


SkyWayは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。「SkyWay Android SDK」はSkyWayをAndroidから利用できるフレームワークです。このドキュメントでは、SkyWay Android SDKの基本的な使い方を紹介します。SkyWay Android SDKを用いた実装例をご覧になりたい方は, サンプルアプリ を御覧ください。

セットアップ

1. 必要な設定を追加

下記の設定をマニフェストファイルに追加してください。

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

2. SkyWay Android SDKのインポート

SkyWay.aarをアプリケーションに追加後にSkyWay Android SDKのクラスファイルをインポートしてください。

#import io.skyway.Peer.*;

3. Peerオブジェクトを作成

Peerオブジェクトは、Peerコネクションを生成、受信する為に利用します。

PeerOption options = new PeerOption();
options.key = "{APIKEY}";
options.domain = "{DOMAIN}";
Peer peer = new Peer(options);

Peerのコンストラクタに渡す'APIKEY'は、SkyWayのAPIキーです。APIキーの申し込みを行うことで無料で取得することができます。APIキー申込時には利用ドメインを申請していただきます。APIキーは申請したドメインからのみ利用可能です。

セッション情報交換やシグナリングに利用するサーバを、自身で構築することもできます。 詳しくはpeerjs-serverをご覧ください。

これで利用するための準備はすべて整いました!

使い方

Peerオブジェクトは生成時、ランダムなID(以下、PeerID)が付与されます。

peer.on(Peer.PeerEventEnum.OPEN, new OnCallback(){
 public void onCallback(Object object){
 if (object instanceof String){
 string id = (String) object;
 }
 }
 });

他のPeerと接続したい場合は、接続先のPeerIDが必要になります。 PeerクラスのlistAllPeersメソッドを用いて接続先のPeerIDを入手するか、何らかの仕組みでPeerIDを交換してください。Peerコンストラクタのオプションに任意のPeerIDを指定する事もできます

その他のオプション、メソッド、イベントエラー処理などの詳細は、Peer API リファレンスをお読みください。

Data connections

相手のPeerIDを指定してPeerのconnect(peerId)メソッドを実行するとdata connectionを開始します。相手から接続要求はいつでもPeerEventEnum.CONNECTIONイベントを利用して受け取ることができます。

接続開始
DataConnection dataConnection = peer.connect('dest-peer-id');
接続イベントの受信
peer.on(Peer.PeerEventEnum.CONNECTION,new OnCallback(){
 public void onCallback(Object object){
 //接続イベント受信時の処理
 }
 });

Peerのconnect(peerId)メソッドとPeerEventEnum.CONNECTIONイベントのコールバックではDataConnectionオブジェクトを提供します。このオブジェクトを使用してデータの送受信を行うことができます。

dataConnection.on(DataEventEnum.DATA,new OnCallback(){
 public void onCallback(Object object){
 //文字列データの受信
 String strValue = null;
 if (object instanceof String){
 strValue = (String)object;
 }
 }
});
//メッセージ送信
Bool bResult = dataConnection.send("Hello SkyWay!");
if(NO == bResult){
 //送信失敗
}else{
 //送信成功
}

メソッドとイベントの詳細は、DataConnection API リファレンスをご覧ください。

Video/audio calls

相手のPeerIDを指定してPeerのcall(peerId)メソッドを実行することで、その相手を呼び出すことができます。相手があなたを呼び出した場合、 PeerEventEnum.CALLイベントが発生します。

PeerEventEnum.CALLイベントを受信した時は、必ずそのイベントに応答する必要があります。応答しなければ接続は確立しません。

呼び出し開始
MediaConnection mediaConnection = peer.call('dest-peer-id',mediaStream);
呼び出しへの応答
peer.on(Peer.PeerEventEnum.CALL,new OnCallback(){
 public void onCallback(Object object){
 mesiaConnection.answer(mesiastream);
 }
});

相手を呼び出す時、または、呼び出しに応答する時には、MediaStreamを提供する必要があります。 MediaStreamにはビデオストリーム(カメラの映像)やオーディオストリームなどがあり、NavigatorのgetUserMediaメソッドによって取得することができます。 尚、呼び出しに応答する時のMediaStreamは必須ではありません。もし応答時にMediaStreamをセットしなければ、一方向の通話が確立されます。 通話が確立されると、isOpenプロパティにtrueがセットされます。

Peerのcall(peerId)PeerEventEnum.CALLイベントのコールバックではMediaConnectionオブジェクトを提供します。 MediaConnectionオブジェクトはMediaEventEnum.STREAM イベントをキャッチすることができます。MediaEventEnum.STREAMイベントのコールバックには相手の映像/音声ストリームが含まれます。

mediaConnection.on(event, new OnCallback(){
 puclic void onCallback(Object object){
 // 'stream' は接続先のMediaStreamです。
 // ここでCanvasに追加
 }
 });

詳しくは MediaConnection API reference をご覧ください。

SkyWay RestAPIの使い方

listAllPeers

APIキー毎のアクティブなPeerIDを取得します。

peer.listAllPeers(new OnCallback(){
 public void onCallback(Object object){
 if (!(object instanceof JSONArray)){
 return;
 }
 JSONArray peers = (JSONArray) object;
 }
});

SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。

FAQ

どのような種類のデータを送ることができますか?

SkyWay Android SDKはserializationをbinaryまたはbinary-utf8にした場合、MessagePackシリアライゼーションフォーマットを利用します。Byte, Short, Integer, Long, Float, Double, byte[], String, ByteBuffer, List, Mapを簡単な手順で送受信することができます。

HashMap< String, String> map = new HashMap();
for (int i = 0 ; 5> i ; i++){
 String strKey = String.format("%d", i);
 String strValue = String.format("Value:%d", i);
 map.put(strKey, strValue);
 }
Boolean bResult = _data.send(map);

serializationの設定値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

SkyWay Android SDKを利用することができないシーンはありますか?

シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。 ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、Peerコンストラクタのオプションで設定することができます。

TURNサーバはどのようにして利用するのでしょうか?

Peerオブジェクトを生成する際、PeerOption内のconfigプロパティにおいてIceConfigオブジェクトにURL等の情報を設定してください。

PeerOption options = new PeerOption();
//設定例はサンプルです。利用時には適切なサーバを設定してください。
IceConfig configTurn = new IceConfig();
configTurn.url = "turn:homeo@turn.bistri.com:80";
configTurn.credential = "homeo";
options.config = {configStun,configTurn};
Peer peer = new Peer(options);

尚、SkyWayが提供するTURNサーバを利用する場合は、オプションの設定は不要です。

接続しようとしてるピアに接続できない場合はどうなりますか?

ピアに接続できない場合はPeerServerにて接続要求を5秒間保持します。ピアが一時的に再接続するような場合、コネクションを切らずに保持することができます。

ピアとつながらない場合は何を確認するべきでしょうか?

ピア同士がシンメトリックNATの内側にいる可能性があります。この場合はTURNサーバを利用してください。

ファイアウォール等でUDPのポート3478(STUNサーバへの問い合わせに必要)をブロックしているかもしれません。STUNサーバへの問い合わせが可能な状況でご利用ください。

遅延/帯域幅は?

ピア同士のデータのやり取りは、TURNを利用する場合を除き、サーバを経由しないため、それが原因となる遅延などは発生しません。ピア同士の処理性能やネットワーク環境に依存します。

ピア同士のコネクション確立に関する遅延は、セッション情報の中継(以下、シグナリング)とユーザの識別という2つに分類できます。PeerJSでは、シグナリングの時間を短縮するために、XHRストリーミングリクエストでデータを送った後、WebSocketで送ります。ユーザの識別に関しては手動でIDを指定することで、サーバ側にてIDを生成する際のRTT(Round-Trip delay Time)を短縮することができます。

対応OS

Android 4.0.3+

動作確認機種

Nexus 5 2013、Nexus 6 2015、Xperia Z1 2013、ZenPhone 2014、Galaxy S5

その他

SkyWay Technical Forum Google Group(日本語/英語)

免責事項

本ドキュメントはhttp://peerjs.com/docs/を元に、NTTコミュニケーションズが提供するSkyWayを利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。

API Reference« »

Getting Started

Peer CLASSPeer peer = new Peer(getApplicationContext(),peerId,options);
Peer peer = new Peer(getApplicationContext(),options);

他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。

[peerId] String

他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。

options PeerOption">PeerOption

設定情報オブジェクトを指定します。

connect METHODDataConnection dataConnection = peer.connect(peerId);
DataConnection dataConnection = peer.connect(peerId,options);

idで指定されたリモートのPeerへ接続し、DataConnectionを返します。コネクションに失敗した場合は、errorイベントが呼び出されます。

peerId String

リモートpeerのブローカーIDです(リモートpeerのidentityです)。

[options] ConnectOption">ConnectOption

設定情報オブジェクトを指定します。

call METHODMediaConnection mediaConnection = peer.call(peerId,stream);
MediaConnection mediaConnection = peer.call(peerId,stream,option);

idで指定されたリモートのpeerへ発信し、MediaConnectionを返します。コネクションに失敗した場合には、errorイベントが発生します。

peerId String

リモートpeerのブローカーID(リモートpeerのidentity)です。

stream MediaStream">MediaStream

使用するローカルメディアストリームです。

[option] CallOption">CallOption

設定情報オブジェクトを指定します。

on METHODpeer.on(event,callback);

PeerのイベントコールバックBlockを設定します。

event PeerEventEnum

設定するイベント種別を指定します。

OPEN peer.on(Peer.PeerEventEnum.OPEN,new OnCallback(){public void onCallback(Object ownId){...}});

PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。ownIdはブローカーIDです(Peerコンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。

CONNECTION peer.on(Peer.PeerEventEnum.CONNECTION,new OnCallback(){public void onCallback(Object object){...}});

リモートピアと新しいdata connectionが確立すると発生します。callbackの引数はDataConnectionクラスになります。

CALL peer.on(Peer.PeerEventEnum.CALL,new OnCallback(){public void onCallback(Object object){...}});

リモートのpeerがあなたに発信してきたときに発生します。callbackの引数はMediaConnectionクラスになります。mediaConnectionはこの時点でアクティブではありません。最初に応答を返す必要があります(mediaConnection.answer(stream);)。返答後、streamイベントをlistenできます。

CLOSE peer.on(Peer.PeerEventEnum.CLOSE,new OnCallback(){public void onCallback(Object object){...}});

ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。

DISCONNECTED peer.on(Peer.PeerEventEnum.DISCONNECTED,new OnCallback(){public void onCallback(Object object){...}});

ピアとの接続がdisconnectedとなった場合に発生します。

ERROR peer.on(Peer.PeerEventEnum.ERROR,new OnCallback(){public void onCallback(Object object){...}});

callbackの引数はPeerErrorクラスになります。peerに対するエラーは、ほとんど常に致命的であり、peerを破壊します。ソケットから生じるエラーや、PeerConnectionsから生じるエラーは、このイベントに伝えられます。

callback

イベント発生時に実行するBlockを設定します。

disconnect METHODpeer.disconnect();

サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。disconnectedtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。

destroy METHODpeer.destroy();

サーバへの接続をクローズし、すべての既存のコネクションを終了します。destroyedtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。

listAllPeers METHODpeer.listAllPeers(new OnCallback(){public void onCallback(Object object){...}});

SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。PeerIDはJSONArrayで渡されます。

identity String

peerのブローカーIDです。もしIDがPeerクラスで指定されない場合、openが発生するまで、undefinedのままです。

connections Map

コネクション接続管理オブジェクトです。リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。

isDisconnected Boolean

PeerServerとのアクティブなコネクションがある場合は、false です。

isDestroyed Boolean

このpeerにおける、全接続が利用されていない場合はtrueです。

PeerOption CLASSPeerOption options = new PeerOption();

Peer初期化時のオプション設定情報クラスです。

key String

クラウド上のPeerServerを利用するためのAPIキーです。

domain String

SkyWayでの開発者登録時に指定したWebサーバのドメイン文字列を指定します。

[host] String

サーバのホスト名です。デフォルトはskyway.ioとなります。

[port] int

サーバのポート番号です。デフォルトは443番となります。

[path] String

自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。

[secure] Boolean

SSLを利用する場合は、trueにします。skyway.ioはSSLを利用するため、デフォルトは、trueです。

[turn] Boolean

SkyWayが提供するTURNサーバを利用する場合は、trueにします。デフォルトは、trueです。利用には別途申請が必要です。

[config] ArrayList

STUN/TURNサーバ設定オブジェクトIceConfigのArrayを設定します。デフォルトでは、SkyWayのSTUNサーバ(stun:stun.skyway.io:3478)が設定されています。尚、SkyWayが提供するTURNサーバを利用する場合は、TURNサーバについての記載は不要です。

[debug] DebugLevelEnum

debugレベルにしたがってログを出力します。デフォルト値はDEBUG_LEVEL_NO_LOGSです。

NO_LOGS

ログを出力しません。

ONLY_ERROR

エラーのみログ出力します。

ERROR_AND_WARNING

エラーと警告をログ出力します。

ALL_LOGS

すべてのログを出力します。

IceConfig CLASSIceConfig config = new IceConfig();

Peer初期化時のSTUN/TURNサーバ設定情報クラスです。

url String

STUN/TURN サーバの URL を指定します。

[username] String

ユーザー名が必要な場合に設定します。

[credential] String

パスワードが必要な場合に設定します。

ConnectOption CLASSConnectOption option = new ConnectOption();

Peerのconnect実行時のオプション設定情報クラスです。

label String

data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。

metadata String

コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。

serialization DataConnection.SerializationEnum

データ通信形式を指定します。デフォルトでBINARYが設定されます。この値によってdataConnection.sendで送れるデータ型が変化します。dataConnection.serializationにて確認できます。

BINARY

データ通信形式をbinaryにします。

BINARY_UTF8

データ通信形式をbinary-utf8にします。

JSON

データ通信形式をjsonにします。

NONE

データ通信形式をnoneにします。

reliable Boolean

data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはfalseです。

CallOption CLASSCallOption option = new CallOption();

Peerのcall実行時のオプション設定情報クラスです。

metadata String

コネクションと関連付けされるメタデータ文字列です。

PeerError CLASS

"error"イベント時に取得できるクラスです。OS からのエラー情報が存在した場合、エラー情報オブジェクトがプロパティerrorに参照されます。

type PeerErrorEnum

列挙型のエラータイプが設定されます。

NO_ERROR Errorfatal

エラーがない状態です

BROWSER_INCOMPATIBLE Errorfatal

利用しようとしているwebRTC機能のすべて、またはいくつかについて、サポートしていません。

INVALID_ID Errorfatal

Peerクラスへ渡されたIDに、不正な文字が含まれています。

INVALID_KEY Errorfatal

Peerクラスへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。

UNAVAILABLE_ID Errorfatal

Peerクラスへ渡されたIDは既に利用されています。

SSL_UNAVAILABLE Errorfatal

SSL関連のエラーです。

DISCONNECTED Error

既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。

SERVER_ERROR Errorfatal

サーバに到達できません。

SOCKET_ERROR Errorfatal

ソケットからのエラーです。

SOCKET_CLOSED Errorfatal

ソケットが予期せずクローズしました。

NETWORK Errorfatal

シグナリングサーバとのネットワークエラーです。

PEER_UNAVAILABLE Errorfatal

接続できないPeerに接続しようとしています。

WEBRTC Errorfatal

WebRTC関連での何からのエラーです。

message String

エラーメッセージです。

exception Exception

OSからのエラー情報オブジェクトです。

DataConnection CLASS

WebRTCのData Channelをラップします。このオブジェクトを得るためには、Peerのconnectを使うか、CONNECTION発生時に渡されるオブジェクトを使用してください。

send METHODBOOL bResult = dataConnection.send(data);

接続中のリモートピアにデータを送信します。プロパティserializationの値によって送信処理が変わります。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。

data

送信するデータです。

close METHODdataConnection.close();

DataChannelとPeerConnectionを解放して、コネクションをクローズします。

on METHODdataConnection.on(event,new OnCallback(){public void onCallback(Object object){}});

DataConnectionのイベントコールバックBlockを設定します。

event DataEventEnum

設定するイベント種別を指定します。

DATA

リモートpeerからデータを受信した場合に発生します。

OPEN

コネクションが利用可能となった場合に発生します。

CLOSE

あなたが、またはリモートのpeerがdata connectionをクローズした場合に発生します。

ERROR

callbackの引数はPeerErrorクラスになります。

callback

イベント発生時に実行するBlockを設定します。

bufferSize int

バッファが一杯になった場合に、キューされるメッセージのサイズです。

dataChannel DataChannel">DataChannel

コネクションに関連付けされたDataChannelオブジェクトへの参照です。

label String

コネクションが開始されたときにアサインされる、または指定されるオプションのラベルです。

metadata String

コネクションが開始されたときに、コネクションと関連付けされるメタデータ文字列です。

isOpen BOOL

コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。

peerConnection PeerConnection

コネクションに関連付けされる、PeerConnectionオブジェクトです。

peer String

コネクションの相手側のpeer IDです。

reliable BOOL

信頼性のあるdata channelの場合はtrueです。コネクションの開始時に定義されます。

serialization SerializationEnum

コネクションを通じて送信されるデータのserializeフォーマットです。コネクションの開始時に定義されます

BINARY

データ通信形式がbinaryの時にこの値が返されます。

BINARY_UTF8

データ通信形式がbinary-utf8の時にこの値が返されます。

JSON

データ通信形式がjsonの時にこの値が返されます。

NONE

データ通信形式がnoneの時にこの値が返されます。

type String

data connectionでは、常に'data'が設定されます。

MediaConnection CLASS

WebRTCのmedia streamをラップします。このオブジェクトを得るためには、Peerのcallを使うか、CALL発生時に渡されるオブジェクトを使用してください。

answer METHODmediaConnection.answer();
mediaConnection.answer(stream);

callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにてanswerを呼び出せます。また、オプションで自身のmedia streamを設定できます。

[stream] MediaStream">MediaStream

NavigatorのgetUserMediaによって取得されるMediaStreamです。

close METHODmedia.close();

media connectionをクローズします。

on METHODmedia.on(event, new OnCallback(){puclic void onCallback(Object object){}});

MediaConnectionのイベントコールバックBlockを設定します。

event MediaEventEnum

設定するイベント種別を指定します。

STREAM

リモートのpeerがstreamを追加したときに発生します。

CLOSE

あなたか、リモートのpeerがmedia connectionをクローズした時に発生します。

ERROR

callbackの引数はPeerErrorクラスになります。

callback

イベント発生時に実行するBlockを設定します。

isOpen BOOL

コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。

peer String

コネクションの相手側のpeer IDです。

type String

media connectionでは、常に'media'が設定されます。

MediaStream CLASS
close METHODstream.close();

メディアストリームをすべて閉じます。

getVideoTracks METHODint videos = stream.getVideoTracks();

メディアストリームに追加されているビデオトラック数を取得します。

setEnableVideoTrack METHODstream.setEnableVideoTrack(pos,enable);

メディアストリームに追加済みのビデオトラック再生状態を設定します。

pos int

ビデオトラック番号を選択します。ビデオトラック番号は0以上を設定します。

enable Boolean

trueなら再生し、falseなら停止します

getEnableVideoTrack METHODBoolean enable = stream.getEnableVideoTrack(pos);

メディアストリームに追加済みのビデオトラック再生状態を取得します。

pos int

ビデオトラック番号 (0 -)を選択します。

getAudioTracks METHODint audios = stream.getAudioTracks();

メディアストリームに追加されているオーディオトラック数を取得します。

setEnableAudioTrack METHODstream.setEnableAudioTrack(pos,enable);

メディアストリームに追加済みのオーディオトラック再生状態を設定します。

pos int

オーディオトラック番号 (0 -)を選択します。

enable Boolean

trueなら再生し、falseなら停止します

getEnableAudioTrack METHODBoolean enable = stream.getEnableAudioTrack(pos);

メディアストリームに追加済みのオーディオトラック再生状態を取得します。

pos int

オーディオトラック番号を選択します。オーディオトラック番号は0以上が設定されます。

switchCamera METHODBoolean enable = stream.switchCamera();

ローカルメディアストリームの場合、可能であればカメラの切替を行います。カメラが変更された場合はtrue、それ以外はfalseを返します。

Canvas OBJECTCanvas canvas = (Canvas) findViewById(R.id.ownvideo);

映像を表示するレンダラービュー オブジェクトです。

addSrc METHODcanvas.addSrc(stream,trackNo);

メディアソースとして、 指定のメディアストリーム・トラック番号を追加します。

stream MediaStream">MediaStream

追加するメディアストリームです。

trackNo int

追加するビデオトラック番号です。トラック番号は0以上の数で設定します。

removeSrc METHODcanvas.removeSrc(stream,trackNo);

メディアソースとして使用していたメディアストリーム・トラック番号を削除します。

stream MediaStream">MediaStream

削除するメディアストリームです。

trackNo int

削除するビデオトラック番号です。

Navigator CLASS

映像を取得するためのクラスです。

initialize METHODNavigator.initialize(peer);

初期化を行います。

peer Peer">Peer

作成・初期化済みのPeerオブジェクト

terminate METHODNavigator.terminate();

終了化を行います。

getUserMedia METHODMediaStream stream = Navigator.getUserMedia(constraints);

ローカルメディアストリームを取得します。

constraints MediaConstraints">MediaConstraints

メディアストリームの設定です。

MediaConstraints CLASS

NavigatorのgetUserMedia実行時のオプション設定クラスです。

videoFlag Boolean

映像使用を設定します。trueなら映像を有効に、falseなら映像を無効にします。デフォルトはtrueです。

audioFlag Boolean

音声使用を設定します。trueなら音声を有効に、falseなら音声を無効にします。デフォルトはtrueです。

cameraPosition CameraPositionEnum

使用するカメラの位置を設定します。デフォルトはFRONTになります。

UNSPECIFIED

一番始めに見つけたカメラを使用します。順序はシステムに依存します。

BACK

アウトカメラを使用します。アウトカメラが見つからない場合は、一番始めに見つけたカメラを使用します。

FRONT

インカメラを使用します。インカメラが見つからない場合は、一番始めに見つけたカメラを使用します。

maxWidth int

横ピクセル上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは640となります。

minWidth int

横ピクセル下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。

maxHeight int

縦ピクセル上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは640となります。

minHeight int

縦ピクセル下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。

maxFrameRate int

フレームレート上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは10となります。

minFrameRate int

フレームレート下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。

AltStyle によって変換されたページ (->オリジナル) /