bricks/docs/ja/rtc.md
2025-11-19 12:30:39 +08:00

6.0 KiB
Raw Blame History

VideoBox

コントロール機能:ページ内に <video> 要素を作成・管理するためのもので、音声・映像ストリームMediaStreamの設定をサポートしており、主にローカルまたはリモートのビデオレンダリングに使用されます。
タイプ通常コントロールUI コントロール)
親クラスbricks.JsWidget

初期化パラメータ

明示的なコンストラクタはなく、create() メソッド呼び出し時に自動的にDOM要素が生成され、以下のデフォルト属性が設定されます

  • autoplay: true:自動再生
  • muted: true:ミュート再生

主なイベント

カスタムイベントは公開されていませんが、内部ではネイティブの <video> 要素のイベント(例:playpause など)を使用しています。外部からの制御用に以下のメソッドを提供します:

  • set_stream(stream)video 要素に MediaStream を設定
  • get_stream():現在バインドされている MediaStream を取得

Signaling

コントロール機能WebSocketによるシグナリングチャネルを実装し、ログイン、ハートビート、メッセージの送受信およびセッション管理を担当します。WebRTCにおけるマルチエンド通信の中心的な調整モジュールです。異なるタイプのセッションに対するメッセージハンドラー登録も可能です。
タイプ通常コントロール非UIモジュール
親クラス:なし(独立クラス)

初期化パラメータ

パラメータ 説明
signaling_url String WebSocketサービスのアドレス
info Object 現在のクライアント識別情報ユーザーIDなど。各メッセージに付加して送信
connect_opts Object 接続オプション。セッションハンドラーに渡される
onclose Function WebSocket切断時のコールバック
onlogin Function ログイン成功後、オンラインユーザー一覧を受け取ったときに発火
onopen Function WebSocket接続確立時のコールバック任意
heartbeat_period Number ハートビート周期秒単位。0の場合は無効

主なイベント

recvdata_handler を通じて受信データを配信。主なメッセージタイプは以下の通り:

  • online:ログイン応答。現在オンラインのユーザー一覧を含む
  • new_session:新しいセッション作成要求
  • カスタム sessiontype メッセージ:add_sessionhandler() で登録されたハンドラーによって処理

動的ハンドラー登録をサポート:

  • add_sessionhandler(sessiontype, handlerClass):特定のセッションタイプに対応するハンドラークラスを登録
  • add_handler(key, handler):指定した sessionid に対してメッセージハンドラーを追加

RTCP2PConnect

コントロール機能WebRTCのピアツーピア接続ロジックをカプセル化。メディアストリーム処理、データチャネル、シグナリング連携、ICEネゴシエーションなどを含み、音声・映像通話およびデータ転送を実現します。
タイプ:通常コントロール(通信モジュール)
親クラス:なし(独立クラス)

初期化パラメータ

パラメータ 説明
signaling Signaling インスタンス 上位層のシグナリングインスタンス。シグナリングメッセージの送受信に使用
session Object 現在のセッションオブジェクト {sessionid, sessiontype}
opts Object 設定項目。以下のような構造:
{
  ice_servers: [],           // STUN/TURN サーバー設定
  peer_info: {},             // 相手側情報callrequest 用)
  auto_callaccept: true,     // 呼び出しを自動承認するかどうか
  media_options: {            // getUserMedia のパラメータ
    video: true,
    audio: true
  },
  data_connect: true,        // データチャネルを確立するかどうか
  on_pc_connected: Function, // PeerConnection 接続成功時のコールバック
  on_pc_disconnected: Function, // PeerConnection 切断時のコールバック
  on_dc_open: Function,      // データチャネルオープン時のコールバック
  on_dc_close: Function,     // データチャネルクローズ時のコールバック
  on_dc_message: Function    // データチャネルからメッセージ受信時のコールバック
}

主なイベント

内部ハンドラーにより以下のシグナリングメッセージタイプを監視・応答:

  • sessioncreated:セッション作成成功。接続プロセスを開始
  • callrequest着信要求を受信。auto_accept 設定時は自動応答
  • callaccepted相手が通話を承認。SDPネゴシエーション開始
  • offerSDP Offer 受信。Answer を返信
  • answerSDP Answer 受信。ネゴシエーション完了
  • icecandidateICE候補を受信。PeerConnection に追加
  • sessionquit:セッション終了。接続を閉じる

その他のランタイムイベント:

  • oniceconnectionstatechangeICE接続状態の変化
  • onconnectionstatechange接続状態の変化connected/disconnected
  • ondatachannel / ontrack:リモートからのデータチャネルまたはメディアトラック到達

まとめ

  • VideoBox は可視化コントロールであり、ビデオストリームの表示に使用されます。
  • Signaling はシグナリングの中核で、サーバーとの通信を担当します。
  • RTCP2PConnect は WebRTC 接続制御モジュールであり、ピアツーピア接続の全フローを処理します。

この3つが協調動作することで、完全なリアルタイム通信システムが構築されます。