Skip to content

インスタンス化とパラメータ設定 ​

var engine = new P2PEngineFile(url, p2pConfig); ​

新しい P2PEngineFile インスタンスを作成します。url はファイルダウンロードのアドレスです。p2pConfig を指定した場合、対応するデフォルト値は上書きされます。

フィールド型デフォルト値説明
logLevelstring|boolean'error'logのレベル。warn、error、noneに分かれます。trueを設定するとwarn相当、falseを設定するとnone相当になります。
tokenstringundefinedtokenは管理パネルでの複数ドメインのデータ集計表示に使用します。また、channelIdをカスタマイズする場合もtokenの設定が必要です。
trackerZonestring'eu'trackerサーバーアドレスの国コード。'cn'、'eu'、'hk'、'us' に分かれます。
p2pEnabledbooleantrueP2Pを有効にするかどうか。
webRTCConfigObject{}stunとdatachannelを設定するための辞書オブジェクト。
pieceLengthnumber1024 * 1024各セグメントのサイズ(単位:Byte)。同じpieceLengthのノード同士でのみ接続できます。
httpMaxRetrysnumber2HTTPで特定のセグメントをダウンロードする際の最大リトライ回数。
mitmstring'https://cdnbye.github.io/file-p2p-engine/demo/mitm.html'ServiceWorkerをインストールし、ブラウザのデフォルトのファイルダウンロード動作をトリガーするためのiFrameアドレス。デフォルトはgithubでホスティングされています。
diskCacheLimitObject{"pc": 1500 * 1024 * 1024, "mobile": 1000 * 1024 * 1024}ディスクキャッシュの最大データ量。PCとmobileに分かれます。

P2PEngineFile API ​

P2PEngineFile.version (static) ​

P2PEngineFileのバージョン番号を取得します。

P2PEngineFile.protocolVersion (static) ​

P2Pプロトコルのバージョン番号を取得します。

P2PEngineFile.isSupported() (static method) ​

現在のブラウザがWebRTC datachannelに対応しているかを判定します。

engine.start() ​

ファイルのダウンロードを開始します。

engine.pause() ​

ファイルのダウンロードを一時停止します。

engine.resume() ​

ファイルのダウンロードを再開します。

engine.stop() ​

ファイルのダウンロードを停止し、P2Pを終了してengineを破棄し、メモリを解放します。

engine.destroy() ​

ファイルのダウンロードを停止し、P2Pを終了してengineを破棄し、メモリを解放します。

engine.isSaveByStreamSupported ​

ブラウザがServiceWorkerベースのストリーミングダウンロードに対応しているか確認します。

engine.saveByServiceWorkerStream(filename) ​

ブラウザのデフォルトのファイルダウンロード動作をトリガーします。

P2PEngineFile のイベント ​

engine.on('metadata', function (source) {}) ​

ファイルのメタ情報を取得します。内容は以下の通りです:
source.getUrl():ファイルダウンロードアドレス
source.getMime():ファイルの MimeType
source.getFileLength():ファイルサイズ

engine.on('progress', function (ratio) {}) ​

ファイルのダウンロード進捗。

engine.on('failed', function () {}) ​

ファイルのダウンロードが失敗しました。このコールバックを監視することで通常のダウンロードモードにフォールバックできます。

engine.on('speed', function (speed) {}) ​

平均ダウンロード速度(byte/s)。

engine.on('finished', function (file) {}) ​

ファイルのダウンロード完了後にコールバックされます。fileはファイルを操作するためのオブジェクトで、以下を含みます:
file.save(fileName):ファイルをローカルに保存します。fileNameは保存するファイル名です
file.getBlobURL():BlobURLを取得します
file.revokeBlobURL():BlobURLへの参照を解除し、メモリを解放します

engine.on('peerId', function (peerId) {}) ​

サーバーからpeerIdを取得した際にこのイベントがコールバックされます。

engine.on('peers', function (peers) {}) ​

新しいノードとのp2p接続が確立に成功した際にこのイベントがコールバックされます。

engine.on('stats', function (stats) {}) ​

このコールバック関数からp2p情報を取得できます。内容は以下の通りです:
stats.totalHTTPDownloaded: HTTP(CDN)からダウンロードしたデータ量(単位KB)
stats.totalP2PDownloaded: P2Pからダウンロードしたデータ量(単位KB)
stats.totalP2PUploaded: P2Pでアップロードしたデータ量(単位KB)
stats.p2pDownloadSpeed: P2Pダウンロード速度(単位KB/s)

engine.on('serverConnected', function (connected) {}) ​

websocketの接続・切断時にこのイベントがコールバックされます。

engine.on('exception', function (e) {}) ​

このコールバック関数からSDKの例外情報を取得できます。内容は以下の通りです:
e.code: 例外の識別子(TRACKER_EXPT SIGNAL_EXPT)
e.message: 例外メッセージ
e.stack: 例外のスタック情報

p2pConfigを通じてp2p情報を取得する ​

javascript
p2pConfig: {
    getStats: function (totalP2PDownloaded, totalP2PUploaded, totalHTTPDownloaded, p2pDownloadSpeed) {
        // p2pダウンロード情報を取得
    },
    getPeerId: function (peerId) {
        // 自ノードのIdを取得
    },
    getPeersInfo: function (peers) {
        // 接続に成功したノードの情報を取得
    }
}

高度な使い方 ​

動的なファイルパスの問題を解決する ​

一部のファイルアドレスは動的に生成されており、ノードごとにファイルアドレスが異なります。例えばexample.com/clientId1/fileId.fileとexample.com/clientId2/fileId.fileのようになります。 本プラグインはデフォルトでファイルをchannelIdとして使用します。このような場合、実際に同じファイルをダウンロードしているノードを同じチャンネルに配置するために、共通のchannelIdを構築する必要があります。

javascript
// channelId をカスタマイズするには、先に p2pConfig で token を設定する必要があります!
p2pConfig: {
    token: YOUR_TOKEN,
    channelId: function (url) {
        const fileId = extractFileIdFromUrl(url);   // 差異のある部分を無視し、一貫したchannelIdを構築します。extractFileIdFromUrlは自身で定義する必要があり、url内のファイルIDを抽出して結果として返すことができます
        return fileId;
    }
    // channelId: VIDEO_ID       // for fixed channel id
}

粤ICP备18075581号