1.0.0 • Published 2 years ago

@videomark/sulfur.js v1.0.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 years ago

統計情報収集ライブラリ (sulfur library API)

\<script> を使用してロードを行う

<script src="./sulfur.js "></script>

Constructor

ライブラリオブジェクトの生成

Constructor(options)

const sulfur = new Sulfur(options);
NameTypeRequiredDefaultDescription
urlstringx-送信先エンドポイント
collectIntervalnumberx1000統計情報収集インターバル
sendIntervalnumberx5000統計情報送信インターバル

open

統計情報収集開始

open(peer, connection, options)

NameTypeRequiredDefaultDescription
peerPeero-SkyWay API の Peer オブジェクト
connectionMediaConnectiono-SkyWay API の MediaConnection オブジェクト
optionsObjectx-Options オブジェクト

Options

NameTypeRequiredDefaultDescription
videoHTMLVideoElementx-通話用の Video Element
additionalIdstringx""additional ID
const peer = new Peer({
  key: API_KEY,
});

const sulfur = new Sulfur();

...
// 発信時
const connection = peer.call(remoteId, localStream);
sulfur.open(peer, connection, {
  video: document.getElementById("remote-pid"), // 対向のpeerID
  additionalId: "additionalId"
});

...
// 着信時
peer.on('call', mediaConnection => {
  mediaConnection.answer(localStream);
  sulfur.open(peer, mediaConnection, {
    video: document.getElementById("remote-pid"), // 対向のpeerID
    additionalId: "additionalId"
  });
});

close

統計情報収集終了

close()

connection.close(true);
sulfur.close();

Events

Event:'error'

エラーが発生した場合のイベント

NameTypeDescription
errorErrorエラーオブジェクト
TypeDescription
open統計情報収集開始に失敗
validate送信データ検証でエラーが見つかった
closed通話相手との接続が切れた
transaction統計情報収集サーバとの通信に失敗
sulfur.on("error", (e) => {
  // ...
});

Event:'opened'

統計情報収集を開始した場合のイベント

NameTypeDescription
urlstring送信先エンドポイント
collectnumber統計情報収集インターバル
sendnumber統計情報送信インターバル
sulfur.on("opened", (url, collect, send) => {
  // ...
});

Event:'closed'

統計情報収集を終了した場合のイベント

NameTypeDescription
countsOfCollectnumber統計情報収集回数
countsOfSendnumber統計情報送信回数
sulfur.on("closed", (countsOfCollect, countsOfSend) => {
  // ...
});

値の取得方法

項目取得方法
peerIdPeer.id
remoteIdMediaConnection.remoteId
apikeyPeer.options.key
additionalId不明
statsMediaConnection.getPeerConnection().getStats()

フィルタ処理

RTCStats のデータは getStats で取得し以下の条件でフィルタしたデータを送信する

type個数条件
transport1dtlsState == 'connected' or 'connecting'
candidate-pair1id == transport.selectedCandidatePairId
local-candidate1id == candidate-pair.localCandidateId
remote-candidate1id == candidate-pair.remoteCandidateId
inbound-rtp2transportId == transport.id
track2id == inbound-rtp.trackId
codec2id == inbound-rtp.codecId
1.0.0

2 years ago

0.0.0

2 years ago