本文へ移動
ドキュメント

RTC と実行環境

Live 連携に音声 RTC、署名処理、プラットフォーム要件を追加します。

Markdown を表示
このページの内容

Live は WebSocket を使います。任意の音声は RTC に委ねられ、公開パッケージには BrowserRTC、BrowserRTC4Chime、VRWebViewRTC と、共通の RTCProtocol 型が含まれます。

組み込み RTC を選ぶ

パッケージに RTC の生成を任せる場合は useBuiltInRTC を使います:

import { createLive, BuiltInRTCType } from '@realsee/live'

const live = createLive({
  useBuiltInRTC: true,
  builtInRTCType: BuiltInRTCType.TRTC,
  getTicket: async () => {
    const response = await fetch('/api/live/ticket')
    return response.json().then((payload) => payload.ticket)
  },
  getVoiceSign: async (params) => {
    const response = await fetch('/api/live/voice-sign', {
      method: 'POST',
      headers: { 'content-type': 'application/json' },
      body: JSON.stringify(params),
    })
    return response.json()
  },
})

SDK は音声パラメーターで getVoiceSign を呼びます。バックエンドで RTC が求めるプロバイダー署名に変換してください。アプリの SK やプロバイダー署名用認証情報をブラウザーに置きません。

独自の RTC

アプリ・WebView・ミニプログラムでは RTCProtocol を満たす独自オブジェクトを渡します。

import { createLive, VRWebViewRTC } from '@realsee/live'
import { JSBridgeApp } from '@realsee/jsbridge-x/lib/app'

const jsBridge = new JSBridgeApp()
const rtc = new VRWebViewRTC({
  jsBridge,
  getVoiceSign: async (params) => {
    const response = await fetch('/api/live/voice-sign', {
      method: 'POST',
      headers: { 'content-type': 'application/json' },
      body: JSON.stringify(params),
    })
    return response.json()
  },
})

const live = createLive({
  rtc,
  jsBridge,
  getTicket: async () => {
    const response = await fetch('/api/live/ticket')
    return response.json().then((payload) => payload.ticket)
  },
})

RTC の操作とイベント

React では useRTCAction と useRTCEventCallback、生のインスタンスでは live.$RTC を使います。

function VoicePanel() {
  const { join, quit, toggleMicro, detectMicro } = LiveReact.useRTCAction()

  LiveReact.useRTCEventCallback('userVolumes', (userVolumes) => {
    console.log(userVolumes)
  })

  return (
    <button
      onClick={async () => {
        const available = await detectMicro()
        if (available) await toggleMicro(true)
      }}
    >
      Enable microphone
    </button>
  )
}

主要イベントは error、initWillStart、inited、joinWillStart、joined、userVolumes、weakNetwork です。

対応プラットフォーム

以下は国内向け Live 文書の要件です。公開前に製品の対象と RTC プロバイダーで確認してください:

プラットフォーム要件
Web国内ガイドの基準はデスクトップ Chrome 56 以降。WebRTC は新しい Chromium を推奨。
Android AppAndroid 5.0 以降。コンテナー開発は Android Studio 3.5 以降。
iOS AppiOS 9.0 以降。コンテナー開発は Xcode 11 以降。
WeChat ミニプログラムiOS 7.0.9・Android 7.0.8 以降、基礎ライブラリ 2.10.0 以降。ネイティブ Live は実機検証。

失敗への対応

接続と音声は別々に扱います:

  • live.connect() が Error を返したらページを保ち再試行を提供します。
  • LiveState.CLOSED では送信を止め、切断状態を表示します。
  • RTC の error・weakNetwork でも共同閲覧を保持し、音声機能を縮退します。
  • 終了時は live.dispose() で音声デバイス、購読、キーフレーム監視を解放します。