このドキュメントは、2018年3月に提供を終了するSkyWayの旧SDKのAPIリファレンスです。
旧SDKをご利用の方は、新SDKへの移行をお願いします。
新SDKをご利用の方は、新SDKのAPIリファレンスをご覧ください。
PeerJSは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。このドキュメントでは、PeerJS APIの基本的な使い方を紹介します。PeerJSを用いた実装例をご覧になりたい方は, サンプル ページを御覧ください。
このドキュメントは、NTTコミュニケーションズが提供するクラウドサービス「SkyWay」にて利用できるようにカスタマイズしたPeerJSを対象としています。
PeerJSクライアントライブラリをあなたのアプリケーションにインクルードしてください。
<script src="https://skyway.io/dist/0.3/peer.js"></script>
PeerJSライブラリ(peer.js, peer.min.js)はあなたのサーバ上に設置することができます。 ソースコードはGithubからforkする事ができます。
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 リファレンスをお読みください。
相手のPeerIDを指定してpeer.connectを実行するとData connectionを開始します。相手から接続要求はいつでもconnection イベントを利用して受け取ることができます。
var conn = peer.connect('dest-peer-id');peer.on('connection', function(conn) { ... });peer.connectとconnectionイベントのコールバックではDataConnectionオブジェクトを提供します。このオブジェクトを使用してデータの送受信を行うことができます。
conn.on('open', function() {
// メッセージを受信
conn.on('data', function(data) {
console.log('Received', data);
});
// メッセージを送信
conn.send('Hello!');
});
メソッドとイベントの詳細は、DataConnection API リファレンスをご覧ください。
相手の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.call と call イベントのコールバックでは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 をご覧ください。
APIキー毎のアクティブなPeerIDを取得します。
peer.listAllPeers(function(list){
//(例)取得したPeerIDリストを配列に格納する
for(var cnt = 0;cnt < list.length;cnt++){ userList.push(list[cnt]); } });
SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。
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)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。
ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、Peerオブジェクトのオプションで設定することができます。
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(日本語/英語)
本ドキュメントはhttp://peerjs.com/docs/を元に、NTTコミュニケーションズが提供するSkyWayを利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。
他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。
他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。
クラウド上のPeerServerを利用するためのAPIキーです。
サーバのホスト名です。デフォルトは、skyway.ioです。相対ホスト名として、'/' も許容します。
サーバのポート番号です。デフォルトはホストがskyway.ioの場合は443番で、その他の場合は80番です。
自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。
SSLを利用する場合は、trueにします。skyway.ioはSSLを利用するため、デフォルトは、trueです。
RTCPeerConnectionへ渡される設定項目のハッシュです。このハッシュは、カスタマイズされたICE/TURNサーバを含みます。デフォルト値は、{ 'iceServers': [{ 'url': 'stun:stun.skyway.io:3478' }] }です。尚、SkyWayが提供するTURNサーバを利用する場合は、iceServersの指定は不要です。
idで指定されたリモートのPeerへ接続し、data connectionを返します。コネクションに失敗した場合に備え、errorイベントを設定してください。
data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。
コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。
binary (default), binary-utf8, json, or none を指定可能です。dataConnection.serializationを通じてアクセスできます。binary-utf8はパフォーマンスの低下を引き起こすことがあります。UTF8文字列がbinaryフォーマットにパックされるためです。
data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはfalseです。true設定は互換性のないブラウザ(Chrome 30とそれ以下)のために、shimを使います。そのため、完全なパフォーマンスを提供できないことがあります。
idで指定されたリモートのpeerへ発信し、media connectionを返します。コネクションに失敗した場合に備え、errorイベントを設定してください。
peerイベントのリスナを設定します。
PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。idはブローカーIDです(コンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。
リモートピアと新しいdata connectionが確立すると発生します。
リモートのpeerがあなたに発信してきたときに発生します。mediaConnectionはこの時点でアクティブではありません。つまり、最初に応答する必要があります(mediaConnection.answer([stream]);)。その後、streamイベントをlistenできます。
ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。
peerに対するエラーは、ほとんど常に致命的であり、peerを破壊します。ソケットから生じるエラーや、PeerConnectionsから生じるエラーは、このイベントに伝えられます。
利用しようとしているwebRTC機能のすべて、またはいくつかについて、クライアントのブラウザがサポートしていません。
Peerコンストラクタへ渡されたIDに、不正な文字が含まれています。
Peerコンストラクタへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。
既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。
サーバに到達できません。
ソケットからのエラーです。
ソケットが予期せずクローズしました。
サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。peer.destroyedにtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。
サーバへの接続をクローズし、すべての既存のコネクションを終了します。peer.destroyedはtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。
SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。listはArray形式で得られます。
peerのブローカーIDです。もしIDがconstructorで指定されない場合、openが発生するまで、undefinedのままです。
リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。
PeerServerとのアクティブなコネクションがある場合は、false です。
このpeerにおける、全接続が利用されていない場合はtrueです。
WebRTCのData Channelをラップします。このオブジェクトを得るためには、peer.connectを使うか、connectイベントをlistenしてください
デフォルトで、data はBinaryPackでシリアライズされて、リモートのピアで送信されます。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
送信するデータです。
DataChannelとPeerConnectionを解放して、コネクションをクローズします。
data connectionイベントのリスナを設定します。
リモートpeerからデータを受信した場合に発生します。
コネクションが利用可能となった場合に発生します。
あなたが、またはリモートのpeerがdata connectionをクローズした場合に発生します。Firefoxはこのイベントをまだサポートしていません。
ブラウザのバッファが一杯になった場合に、キューされるメッセージのサイズです。
コネクションに関連付けされたRTCDataChannelオブジェクトへの参照です。
コネクションが開始されたときにPeerJSからアサインされる、または指定されるオプションのラベルです。
コネクションが開始されたときに、コネクションと関連付けされるメタデータです。
コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。
コネクションに関連付けされる、RTCPeerConnectionへの参照です。
コネクションの相手側のpeer IDです。
信頼性のあるdata channelの場合にtrueです。コネクションの開始時に定義されます。
コネクションを通じて送信されるデータのserializeフォーマットです。binary (デフォルト値)、 binary-utf8、 json、 または none となります。
data connectionでは、常に'data'が設定されます。
WebRTCのmedia streamをラップします。このオブジェクトを得るためには、peer.callを使うか、callイベントをlistenしてください。
callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにて.answerを呼び出せます。また、オプションで自身のmedia streamを設定できます。
getUserMediaから取得できるWebRTCのmedia streamです。
media connectionをクローズします。
media connectionイベントのリスナを設定します。
media connectionがアクティブなとき(例えば、呼び出しにたいして、応答があった後)に、trueとなります。もし片方向通話のために、最大待ち時間を設定したい場合に、これをチェックできます。
コネクションが開始されたときに、コネクションと関連付けされるメタデータです。
コネクションの相手側のpeer IDです。
media connectionでは、常に'media'が設定されます。
多数の有用なユーティリティを提供します。ここで記載されているutlitiesのみutilで保証されます。ここに記載されないutilitiesは予告なく除去されることがあります。これらを、私達は'大きな変更'とは考えません。
利用中のブラウザを返します。このプロパティは、2つのピアの接続可否を決定する際に有用です。例えば、data connectionsはメジャーなブラウザ間では、まだ相互接続が現時点ではできません。util.browserは現在、'Firefox'、'Chrome'、'Unsupported'、'Supported'(WebRTC互換している不明なブラウザ)の値を持ちます。
利用中のブラウザにて機能がサポートされているか、WebRTCの機能ごとにマップされるハッシュです。util.supportsは、ここで記載されているプロパティのみ保証します。
利用中のブラウザが、media streamとPeerConnectionをサポートしている場合にtrueとなります。
利用中のブラウザが、DataChannelとPeerConnectionをサポートしている場合にtrueとなります。
利用中のブラウザが、binary DataChannelをサポートしている場合にtrueとなります。
利用中のブラウザが、信頼性のあるDataChannelをサポートしている場合にtrueとなります。
SkyWayは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。「SkyWay iOS SDK」はSkyWayをiOSから利用できるフレームワークです。このドキュメントでは、SkyWay iOS SDKの基本的な使い方を紹介します。SkyWay iOS SDKを用いた実装例をご覧になりたい方は, サンプルアプリ を御覧ください。
下記のライブラリ、フレームワークを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
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に設定してください。
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 リファレンスをお読みください。
相手の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 リファレンスをご覧ください。
相手の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のcallWithIdとSKW_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 をご覧ください。
APIキー毎のアクティブなPeerIDを取得します。
[peer listAllPeers:^(NSArray* aryPeers)
{
for (NSString* strPeer in aryPeers)
{
...
}
}];
SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。
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)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。
ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、SKWPeerコンストラクタのオプションで設定することができます。
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)を短縮することができます。
iOS 7+
iPhone 5+、iPodTouch 6+、iPad 2+
SkyWay Technical Forum Google Group(日本語/英語)
本ドキュメントはhttp://peerjs.com/docs/を元に、NTTコミュニケーションズが提供するSkyWayを利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。
他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。
他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。
設定情報オブジェクトを指定します。
idで指定されたリモートのPeerへ接続し、SKWDataConnectionを返します。コネクションに失敗した場合は、errorイベントが呼び出されます。
設定情報オブジェクトを指定します。
idで指定されたリモートのpeerへ発信し、SKWMediaConnectionを返します。コネクションに失敗した場合に備え、errorイベントが発生します。
使用するローカルメディアストリームです。
設定情報オブジェクトを指定します。
SKWPeerのイベントコールバックBlockを設定します。
設定するイベント種別を指定します。
PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。ownIdはブローカーIDです(SKWPeerコンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。
リモートピアと新しいdata connectionが確立すると発生します。callbackの引数はSKWDataConnectionクラスになります。
リモートのpeerがあなたに発信してきたときに発生します。callbackの引数はSKWMediaConnectionクラスになります。mediaConnectionはこの時点でアクティブではありません。つまり、最初に応答する必要があります([mediaConnection answer:stream];)。その後、streamイベントをlistenできます。
ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。
ピアとの接続がdisconnectedとなった場合に発生します。
callbackの引数はSKWPeerErrorクラスになります。peerに対するエラーは、ほとんど常に致命的であり、peerを破壊します。ソケットから生じるエラーや、PeerConnectionsから生じるエラーは、このイベントに伝えられます。
イベント発生時に実行するBlockを設定します。
サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。disconnectedにtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。
シグナリングサーバとの再接続を行います。 peerIDは既に割当済みのIDを使用します。disconnectされたピアのみ再接続が可能で、destroyされたピアは再接続できません。
サーバへの接続をクローズし、すべての既存のコネクションを終了します。destroyedはtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。
SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。NSStringのNSArrayが渡されます。
peerのブローカーIDです。もしIDがSKWPeerクラスで指定されない場合、openが発生するまで、undefinedのままです。
コネクション接続管理オブジェクトです。リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。
PeerServerとのアクティブなコネクションがある場合は、NO です。
このpeerにおける、全接続が利用されていない場合はYESです。
SKWPeer初期化時のオプション設定情報クラスです。
クラウド上のPeerServerを利用するためのAPIキーです。
SkyWayでの開発者登録時に指定したWebサーバのドメイン文字列を指定します。
サーバのホスト名です。デフォルトはskyway.ioとなります。
サーバのポート番号です。デフォルトは443番となります。
自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。
SSLを利用する場合は、YESにします。skyway.ioはSSLを利用するため、デフォルトは、YESです。
STUN/TURNサーバ設定オブジェクトSKWIceConfigのNSArray*を設定します。デフォルトでは、SkyWayのSTUNサーバ(stun:stun.skyway.io:3478)が設定されています。尚、SkyWayが提供するTURNサーバを利用する場合は、TURNサーバについての記載は不要です。
debugレベルにしたがってログを出力します。デフォルト値はSKW_DEBUG_LEVEL_NO_LOGSです。
ログを出力しません。
エラーのみログ出力します。
エラーと警告をログ出力します。
すべてのログを出力します。
SKWPeer初期化時のSTUN/TURNサーバ設定情報クラスです。
STUN/TURN サーバの URL を指定します。
ユーザー名が必要な場合に設定します。
パスワードが必要な場合に設定します。
SKWPeerのconnect実行時のオプション設定情報クラスです。
data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。
コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。
データ通信形式を指定します。デフォルトで SKW_SERIALIZATION_BINARYが設定されます。この値によってdataConnection.sendで送れるデータ型が変化します。dataConnection.serializationにて確認できます。
データ通信形式をbinaryにします。
データ通信形式をbinary-utf8にします。
データ通信形式をjsonにします。
データ通信形式をnoneにします。
data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはNOです。
SKWPeerのcall実行時のオプション設定情報クラスです。
コネクションと関連付けされるメタデータ文字列です。
"error"イベント時に取得できるクラスです。OS からのエラー情報が存在した場合、エラー情報オブジェクトがプロパティerrorに参照されます。
列挙型のエラータイプが設定されます。
エラーがない状態です
利用しようとしているwebRTC機能のすべて、またはいくつかについて、サポートしていません。
SKWPeerクラスへ渡されたIDに、不正な文字が含まれています。
SKWPeerクラスへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。
既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。
サーバに到達できません。
ソケットからのエラーです。
ソケットが予期せずクローズしました。
シグナリングサーバとのネットワークエラーです。
WebRTC関連での何からのエラーです。
エラーメッセージです。
OSからのエラー情報オブジェクトです。
WebRTCのData Channelをラップします。このオブジェクトを得るためには、SKWPeerのconnectWithIdを使うか、SKW_PEER_EVENT_CONNECTION発生時に渡されるオブジェクトを使用してください。
接続中のリモートピアにデータを送信します。プロパティserializationの値によって送信処理が変わります。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
送信するデータを設定します。
DataChannelとPeerConnectionを解放して、コネクションをクローズします。
SKWDataConnectionのイベントコールバックBlockを設定します。
設定するイベント種別を指定します。
リモートpeerからデータを受信した場合に発生します。
コネクションが利用可能となった場合に発生します。
あなたが、またはリモートのpeerがdata connectionをクローズした場合に発生します。
callbackの引数はSKWPeerErrorクラスになります。
イベント発生時に実行するBlockを設定します。
バッファが一杯になった場合に、キューされるメッセージのサイズです。
コネクションに関連付けされたRTCDataChannelオブジェクトへの参照です。
コネクションが開始されたときにアサインされる、または指定されるオプションのラベルです。
コネクションが開始されたときに、コネクションと関連付けされるメタデータです。
コネクションがopenであり、読み込み/書き込みの準備ができている場合にYESになります。
コネクションに関連付けされる、RTCPeerConnectionオブジェクトです。
コネクションの相手側のpeer IDです。
信頼性のあるdata channelの場合はYESです。コネクションの開始時に定義されます。
コネクションを通じて送信されるデータのserializeフォーマットです。コネクションの開始時に定義されます
データ通信形式がbinaryの時にこの値が返されます。
データ通信形式がbinary-utf8の時にこの値が返されます。
データ通信形式がjsonの時にこの値が返されます。
データ通信形式がnoneの時にこの値が返されます。
data connectionでは、常に'data'が設定されます。
WebRTCのmedia streamをラップします。このオブジェクトを得るためには、SKWPeerのcallWithIdを使うか、SKW_PEER_EVENT_CALL発生時に渡されるオブジェクトを使用してください。
callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにてanswerを呼び出せます。また、オプションで自身のmedia streamを設定できます。
SKWNavigatorのgetUserMediaによって取得されるSKWMediaStreamです。
media connectionをクローズします。
SKWMediaConnectionのイベントコールバックBlockを設定します。
設定するイベント種別を指定します。
リモートのpeerがstreamを追加したときに発生します。
あなたか、リモートのpeerがmedia connectionをクローズした時に発生します。
callbackの引数はSKWPeerErrorクラスになります。
イベント発生時に実行するBlockを設定します。
media connectionがアクティブなとき(例えば、呼び出しにたいして、応答があった後)に、YESとなります。もし片方向通話のために、最大待ち時間を設定したい場合に、これをチェックできます。
コネクションが開始されたときに、コネクションと関連付けされるメタデータです。
コネクションの相手側のpeer IDです。
media connectionでは、常に'media'が設定されます。
メディアストリームをすべて閉じます。
メディアストリームに追加されているビデオトラック数を取得します。
メディアストリームに追加済みのビデオトラック再生状態を設定します。
メディアストリームに追加済みのビデオトラック再生状態を取得します。
ビデオトラック番号 (0以上の整数)を選択します。
メディアストリームに追加されているオーディオトラック数を取得します。
メディアストリームに追加済みのオーディオトラック再生状態を設定します。
メディアストリームに追加済みのオーディオトラック再生状態を取得します。
オーディオトラック番号 (0以上の整数)を選択します。
ローカルiOSデバイスのメディアストリームの場合、カメラ位置を設定します。
使用するカメラの位置を設定します
一番始めに見つけたカメラを使用します。順序はシステムに依存します。
アウトカメラを使用します。
インカメラを使用します。
ローカルiOSデバイスのメディアストリームの場合、現在のカメラ位置を取得します。
現在のカメラの位置です。
カメラの位置が不明です。
アウトカメラです。
インカメラです。
ローカルiOSデバイスのメディアストリームの場合、可能であればカメラの切替を行います。カメラが変更された場合はtrue、それ以外はfalseを返します。
映像を表示するレンダラービュー オブジェクトです。
メディアソースとして、 指定のメディアストリーム・トラック番号を追加します。
追加するメディアストリームです。
追加するビデオトラック番号 (0以上の整数)です。
メディアソースとして使用していたメディアストリーム・トラック番号を削除します。
削除するメディアストリームです。
削除するビデオトラック番号 (0以上の整数)です。
映像サイズが変更された場合に、呼ばれるコールバックを設定します。
イベント発生時に実行するBlockを設定します。
SKWNavigatorのgetUserMedia実行時のオプション設定クラスです。
映像使用を設定します。YESなら映像を有効に、NOなら映像を無効にします。デフォルトはYESです。
音声使用を設定します。YESなら音声を有効に、NOなら音声を無効にします。デフォルトはYESです。
カメラモードを設定します。デフォルトはSKW_CAMERA_MODE_SWITCHABLEです。
メディアストリームを送信中にカメラの切り替えが可能です。
カメラのwidth/heightを変更可能です。
使用するカメラの位置を設定します。デフォルトはSKW_CAMERA_POSITION_FRONTです。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。
一番始めに見つけたカメラを使用します。順序はシステムに依存します。
アウトカメラを使用します。アウトカメラが見つからない場合は、一番始めに見つけたカメラを使用します。
インカメラを使用します。インカメラが見つからない場合は、一番始めに見つけたカメラを使用します。
横ピクセル上限を設定します。デフォルトは640となります。
maxWidth, minWidth, maxHeight, minHeightで指定できる有効値は、以下のようになります。正しい値、組み合わせでなかった時は、デフォルト値が適用されます。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。max(Width x Height): 640x480, 352x288
min (Width x Height): 192x144, 352x288, 512x384, 640x480
横ピクセル下限を設定します。デフォルトは192となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。
縦ピクセル上限を設定します。デフォルトは480となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。
縦ピクセル下限を設定します。デフォルトは144となります。cameraModeがSKW_CAMERA_MODE_ADJUSTABLEの時にのみ有効です。
SkyWayは、WebRTCを利用したピア·ツー·ピアのデータ、ビデオ、オーディオ通信を簡単に実現することができます。「SkyWay Android SDK」はSkyWayをAndroidから利用できるフレームワークです。このドキュメントでは、SkyWay Android SDKの基本的な使い方を紹介します。SkyWay Android SDKを用いた実装例をご覧になりたい方は, サンプルアプリ を御覧ください。
下記の設定をマニフェストファイルに追加してください。
<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" />
SkyWay.aarをアプリケーションに追加後にSkyWay Android SDKのクラスファイルをインポートしてください。
#import io.skyway.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 リファレンスをお読みください。
相手の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 リファレンスをご覧ください。
相手の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 をご覧ください。
APIキー毎のアクティブなPeerIDを取得します。
peer.listAllPeers(new OnCallback(){
public void onCallback(Object object){
if (!(object instanceof JSONArray)){
return;
}
JSONArray peers = (JSONArray) object;
}
});
SkyWay RestAPIはAPIキー申請時に申請していただいたドメインからのみアクセスが可能です。
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)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
シンメトリックNATの内側にいるクライアント同士はNATを超えることができないため、通信することができません。
ただし、TURNサーバを利用して接続を中継すれば回避することができます。必要であれば、SkyWayが提供するTURNサーバを利用するか別途用意してください。SkyWayが提供するTURNサーバを利用する場合は別途申請が必要です。TURNサーバの情報は、Peerコンストラクタのオプションで設定することができます。
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)を短縮することができます。
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を利用するための情報等を追記し公開しています。ドキュメント原本に関する個別問い合わせには応じることができませんので、予めご了承ください。
他のpeerへ接続できるpeerです。また、他のpeerからのコネクションをlistenできます。
他のピアがこのピアへ接続するときに使われるIDです。もしIDが指定されない場合、ブローカサーバがIDを生成します。このIDを利用してピアを特定するのは推奨しません。なぜならば、このIDはコネクションをブローカ(仲介)するのにのみ使われるように作成されているためです。特定に他の情報を使う場合は、metadataの利用を推奨します。
設定情報オブジェクトを指定します。
idで指定されたリモートのPeerへ接続し、DataConnectionを返します。コネクションに失敗した場合は、errorイベントが呼び出されます。
設定情報オブジェクトを指定します。
idで指定されたリモートのpeerへ発信し、MediaConnectionを返します。コネクションに失敗した場合には、errorイベントが発生します。
使用するローカルメディアストリームです。
設定情報オブジェクトを指定します。
PeerのイベントコールバックBlockを設定します。
設定するイベント種別を指定します。
PeerServerへの接続が確立すると発生します。このイベントが発生する前にpeerを利用することもできますが、サーバへのメッセージはキューイングされます。ownIdはブローカーIDです(Peerコンストラクタで指定されるか、サーバによって割付けされます)。コネクションの速度が重要である場合、他のピアへ接続する前に、このイベントを待つべきではありません。
リモートピアと新しいdata connectionが確立すると発生します。callbackの引数はDataConnectionクラスになります。
リモートのpeerがあなたに発信してきたときに発生します。callbackの引数はMediaConnectionクラスになります。mediaConnectionはこの時点でアクティブではありません。最初に応答を返す必要があります(mediaConnection.answer(stream);)。返答後、streamイベントをlistenできます。
ピアとの接続がdestroyedとなった場合に発生します。peerを確実にクリアするためには、peerが不要となった時点で、peer.destroy()の実行を推奨します。
ピアとの接続がdisconnectedとなった場合に発生します。
イベント発生時に実行するBlockを設定します。
サーバとの接続をクローズします。既存のデータおよびメディア接続はそのままです。disconnectedにtrueが設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。
サーバへの接続をクローズし、すべての既存のコネクションを終了します。destroyedはtrueに設定されます。この操作は必ず実施してください。それぞれのPeerオブジェクトが利用不可能、またはコネクションを受信できません。idも(クラウド上の)サーバに没収されます。さらに、データコネクション・メディアコネクションもクローズされます。
SkyWayが提供するRestAPIにアクセスし、APIキー毎のアクティブなPeerIDを取得します。PeerIDはJSONArrayで渡されます。
コネクション接続管理オブジェクトです。リモートpeerのIDがkeyとして、peerと関連付けされるコネクションを持つハッシュです。このハッシュに頼るよりも、自身でコネクションを追跡管理することを推奨します。
PeerServerとのアクティブなコネクションがある場合は、false です。
このpeerにおける、全接続が利用されていない場合はtrueです。
Peer初期化時のオプション設定情報クラスです。
クラウド上のPeerServerを利用するためのAPIキーです。
SkyWayでの開発者登録時に指定したWebサーバのドメイン文字列を指定します。
サーバのホスト名です。デフォルトはskyway.ioとなります。
サーバのポート番号です。デフォルトは443番となります。
自身のPeerServerが動作している場所のpathです。デフォルトは、'/'です。
SSLを利用する場合は、trueにします。skyway.ioはSSLを利用するため、デフォルトは、trueです。
STUN/TURNサーバ設定オブジェクトIceConfigのArrayを設定します。デフォルトでは、SkyWayのSTUNサーバ(stun:stun.skyway.io:3478)が設定されています。尚、SkyWayが提供するTURNサーバを利用する場合は、TURNサーバについての記載は不要です。
debugレベルにしたがってログを出力します。デフォルト値はDEBUG_LEVEL_NO_LOGSです。
Peer初期化時のSTUN/TURNサーバ設定情報クラスです。
STUN/TURN サーバの URL を指定します。
ユーザー名が必要な場合に設定します。
パスワードが必要な場合に設定します。
Peerのconnect実行時のオプション設定情報クラスです。
data connectionを識別するためのユニークなラベルです。もし特定されていない場合は、ランダムに生成されます。dataConnection.labelを通じてアクセスできます。
コネクションに関連付けされるメタデータで、コネクションを開始したpeerに渡されます。dataConnection.metadataを通じてアクセスできます。serialize可能です。
データ通信形式を指定します。デフォルトでBINARYが設定されます。この値によってdataConnection.sendで送れるデータ型が変化します。dataConnection.serializationにて確認できます。
データ通信形式をbinaryにします。
データ通信形式をbinary-utf8にします。
データ通信形式をjsonにします。
データ通信形式をnoneにします。
data channelに信頼性をもたせるか(例えば、大きなファイルの転送)、もたせないか(例えば、ゲームやストリーミング)を指定可能です。デフォルトはfalseです。
Peerのcall実行時のオプション設定情報クラスです。
コネクションと関連付けされるメタデータ文字列です。
"error"イベント時に取得できるクラスです。OS からのエラー情報が存在した場合、エラー情報オブジェクトがプロパティerrorに参照されます。
列挙型のエラータイプが設定されます。
エラーがない状態です
利用しようとしているwebRTC機能のすべて、またはいくつかについて、サポートしていません。
Peerクラスへ渡されたIDに、不正な文字が含まれています。
Peerクラスへ渡されたAPI Keyが不正な文字列を含んでいます。または、API Keyが含まれていません(クラウド上のサーバを利用する場合のみ)。
既にこのPeerとの接続が切断されており、新しいコネクションを作成できません。
サーバに到達できません。
ソケットからのエラーです。
ソケットが予期せずクローズしました。
シグナリングサーバとのネットワークエラーです。
WebRTC関連での何からのエラーです。
エラーメッセージです。
OSからのエラー情報オブジェクトです。
WebRTCのData Channelをラップします。このオブジェクトを得るためには、Peerのconnectを使うか、CONNECTION発生時に渡されるオブジェクトを使用してください。
接続中のリモートピアにデータを送信します。プロパティserializationの値によって送信処理が変わります。serializationの値による、各プラットフォーム間(JavaScript, iOS, Android)でのデータ通信の可否と、送受信時のデータ型に関する情報についてはこちらをご覧ください。
送信するデータです。
DataChannelとPeerConnectionを解放して、コネクションをクローズします。
DataConnectionのイベントコールバックBlockを設定します。
バッファが一杯になった場合に、キューされるメッセージのサイズです。
コネクションに関連付けされたDataChannelオブジェクトへの参照です。
コネクションが開始されたときにアサインされる、または指定されるオプションのラベルです。
コネクションが開始されたときに、コネクションと関連付けされるメタデータ文字列です。
コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。
コネクションに関連付けされる、PeerConnectionオブジェクトです。
コネクションの相手側のpeer IDです。
信頼性のあるdata channelの場合はtrueです。コネクションの開始時に定義されます。
コネクションを通じて送信されるデータのserializeフォーマットです。コネクションの開始時に定義されます
データ通信形式がbinaryの時にこの値が返されます。
データ通信形式がbinary-utf8の時にこの値が返されます。
データ通信形式がjsonの時にこの値が返されます。
データ通信形式がnoneの時にこの値が返されます。
data connectionでは、常に'data'が設定されます。
WebRTCのmedia streamをラップします。このオブジェクトを得るためには、Peerのcallを使うか、CALL発生時に渡されるオブジェクトを使用してください。
callイベントを受信した場合に、応答するためにコールバックにて与えられるmedia connectionにてanswerを呼び出せます。また、オプションで自身のmedia streamを設定できます。
NavigatorのgetUserMediaによって取得されるMediaStreamです。
media connectionをクローズします。
MediaConnectionのイベントコールバックBlockを設定します。
コネクションがopenであり、読み込み/書き込みの準備ができている場合にtrueになります。
コネクションの相手側のpeer IDです。
media connectionでは、常に'media'が設定されます。
メディアストリームをすべて閉じます。
メディアストリームに追加されているビデオトラック数を取得します。
メディアストリームに追加済みのビデオトラック再生状態を設定します。
メディアストリームに追加済みのビデオトラック再生状態を取得します。
ビデオトラック番号 (0 -)を選択します。
メディアストリームに追加されているオーディオトラック数を取得します。
メディアストリームに追加済みのオーディオトラック再生状態を設定します。
メディアストリームに追加済みのオーディオトラック再生状態を取得します。
オーディオトラック番号を選択します。オーディオトラック番号は0以上が設定されます。
ローカルメディアストリームの場合、可能であればカメラの切替を行います。カメラが変更された場合はtrue、それ以外はfalseを返します。
映像を表示するレンダラービュー オブジェクトです。
メディアソースとして、 指定のメディアストリーム・トラック番号を追加します。
追加するメディアストリームです。
追加するビデオトラック番号です。トラック番号は0以上の数で設定します。
メディアソースとして使用していたメディアストリーム・トラック番号を削除します。
削除するメディアストリームです。
削除するビデオトラック番号です。
NavigatorのgetUserMedia実行時のオプション設定クラスです。
映像使用を設定します。trueなら映像を有効に、falseなら映像を無効にします。デフォルトはtrueです。
音声使用を設定します。trueなら音声を有効に、falseなら音声を無効にします。デフォルトはtrueです。
使用するカメラの位置を設定します。デフォルトはFRONTになります。
一番始めに見つけたカメラを使用します。順序はシステムに依存します。
アウトカメラを使用します。アウトカメラが見つからない場合は、一番始めに見つけたカメラを使用します。
インカメラを使用します。インカメラが見つからない場合は、一番始めに見つけたカメラを使用します。
横ピクセル上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは640となります。
横ピクセル下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。
縦ピクセル上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは640となります。
縦ピクセル下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。
フレームレート上限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは10となります。
フレームレート下限を設定します0を指定すると WebRTCエンジン依存となります。デフォルトは0となります。