带看配置选项,详见 LiveOptions
包含 LiveProvider 组件和各种 Hooks 的对象
LiveProvider 组件
用于在 React 组件树中提供 Live 实例的上下文。 所有子组件都可以通过 Hooks 访问 Live 实例。
不安全地获取 Live 实例(不推荐使用)
直接返回 Live 实例,不检查是否在 LiveProvider 内部。 可能导致在未初始化时访问实例。
Live 实例
不安全地获取 RTC 实例(不推荐使用)
RTC 实例
带看连接操作的 Hook
返回一个连接函数,用于连接到带看房间。
连接函数
使用指定键的帧数据 Hook
返回指定键的帧数据状态和更新函数,类似于 useState。 当帧数据发生变化时,状态会自动更新。
帧数据的键
包含帧数据状态和更新函数的元组 [state, setState]
获取所有帧数据快照的 Hook
返回当前所有帧数据的快照,当任何帧数据发生变化时会自动更新。
当前所有帧数据的快照
监听指定键的帧数据更新回调 Hook
当指定键的帧数据发生变化时,会调用回调函数。 回调函数会在组件卸载时自动清理。
帧数据的键
回调函数,接收新的帧数据、旧的帧数据和请求ID作为参数
Rest...args: Parameters<KeyframeEventType<KeyframesSnapshot>[KeyOfKeyframe]>依赖项数组,当依赖项变化时会重新注册回调
清理函数,可以手动取消监听
带看操作函数的 Hook
返回一组用于操作带看功能的函数,包括连接、发送帧数据、控制麦克风等。 所有函数都使用 useCallback 包装,避免不必要的重新渲染。
包含各种带看操作函数的对象
OptionaltoUserIds: string | string[]function MyComponent() {
const {
connect,
sendKeyframe,
toggleMicro,
broadcast,
exit,
kick,
forbidMicro,
forbidSync,
getFramesByKey,
setSelfInfo,
updateStatus
} = useLiveAction()
// 连接带看
const handleConnect = async () => {
await connect({ url: 'wss://example.com/live', getTicket: async () => 'ticket' })
}
// 发送帧数据
const handleSendFrame = () => {
sendKeyframe('camera', { position: [1, 2, 3] })
}
// 切换麦克风
const handleToggleMicro = () => {
toggleMicro(true)
}
}
监听带看事件的 Hook
监听指定的带看事件,当事件触发时调用回调函数。 回调函数会在组件卸载时自动清理。
事件名称类型
事件名称
回调函数,参数类型根据事件类型自动推断
Rest...args: Parameters<LiveEventType<KeyframesSnapshot>[K]>依赖项数组,当依赖项变化时会重新注册回调
清理函数,可以手动取消监听
RTC 操作函数的 Hook
返回一组用于操作 RTC 语音通信的函数。
包含各种 RTC 操作函数的对象
Optionalflag: booleanfunction MyComponent() {
const { join, quit, toggleMicro, detectMicro, shock } = useRTCAction()
// 加入语音房间
const handleJoin = async () => {
await join({
voiceId: 'voice-id',
userId: 'user-id',
roomId: 'room-id',
type: RTCType.RealseeBrowserRTC
})
}
// 检测麦克风权限
const handleDetectMicro = async () => {
const hasPermission = await detectMicro()
console.log('麦克风权限:', hasPermission)
}
}
监听 RTC 事件的 Hook
监听指定的 RTC 事件,当事件触发时调用回调函数。 回调函数会在组件卸载时自动清理。
事件名称类型
事件名称
回调函数,参数类型根据事件类型自动推断
Rest...args: Parameters<RTCEventType[K]>依赖项数组,当依赖项变化时会重新注册回调
清理函数,可以手动取消监听
获取和设置当前用户信息的 Hook
返回当前用户信息的状态和更新函数,类似于 useState。 当用户信息发生变化时,状态会自动更新。
包含用户信息状态和更新函数的元组 [state, setState]
function MyComponent() {
const [selfInfo, setSelfInfo] = useSelfInfo()
// 读取用户信息
console.log('用户ID:', selfInfo?.id)
console.log('麦克风状态:', selfInfo?.micro_status)
// 更新用户信息
const handleUpdateInfo = async () => {
await setSelfInfo({
extension: {
nickname: '新昵称',
avatar: 'https://example.com/avatar.jpg'
}
})
}
}
// 定义帧数据类型
interface MyKeyframes {
camera: { position: [number, number, number] }
annotation: { text: string; position: [number, number] }
}
// 创建 LiveReact 实例
const { LiveProvider, useLiveAction, useKeyframe } = createLiveReact<MyKeyframes>({
url: 'wss://example.com/live',
getTicket: async () => 'ticket',
getVoiceSign: async (params) => ({ sdkAppId: 0, userId: '', userSig: '', roomId: '' }),
useBuiltInRTC: true
})
// 在组件中使用
function App() {
return (
<LiveProvider>
<MyComponent />
</LiveProvider>
)
}
function MyComponent() {
const { connect, sendKeyframe } = useLiveAction()
const [camera, setCamera] = useKeyframe('camera')
// 使用带看功能...
}
创建 LiveReact 实例,并提供 React 技术栈相关工具链
这个函数会创建一个 Live 实例和一系列 React Hooks,用于在 React 组件中方便地使用带看功能。 返回的对象包含 LiveProvider 组件和各种 Hooks。