独立 RTC 频道
Tauri 界面客户端复用Web 频道 API,不需要另建一套媒体客户端。HTTP 控制请求经引擎转发,界面窗口运行 LiveKit 媒体连接。频道规则见概述。
加入
ts
import { createDRTauriClient } from '@deeprespond/im-tauri';
const im = createDRTauriClient({ appKey: 'org#app' });
// 等引擎就绪且用户登录完成;票据由业务服务端交付。
if (!im.channels.supported) throw new Error('当前窗口不支持频道媒体');
const channel = await im.channels.join('meeting-demo', { ticket: ticketFromBusinessServer });
await channel.setMicrophoneEnabled(true); // 用户操作触发,默认不采集。
const off = channel.on('track', ({ track, session_id, kind }) => {
// 按 Web 频道指南绑定本窗口的 audio/video 元素。
});
// 页面退出:
off();
await channel.leave();界面与引擎
- 界面窗口不持有 IM access / refresh token,HTTP 由引擎鉴权;本窗口只使用短期媒体 Token 连接频道。
- 隐藏引擎
channels.supported=false,不能加入媒体或代替界面采集,但可查询频道状态。 - 只有发起加入的窗口持有句柄;新窗口不会继承媒体。跨窗口的同用户占用由服务器统一判断。
- 运行时检查依赖 WebRTC 和媒体提供方;还需实际 WebView、设备权限和媒体网络可用。不能按旧通话的系统支持表推断频道已经验收。
关闭与恢复
窗口销毁、pagehide / freeze、引擎 restarting / failed 会停止媒体并尝试退出。普通最小化不等同于 pagehide,不会仅因最小化主动离开;控制周期使用精确计时器,系统恢复时刷新状态。
主动销毁客户端会在关闭转发通道前尝试频道退出,最多等待 5 秒;这与应用整体退出等待时间不是同一个保证。引擎不可用、进程崩溃或系统强杀时不保证 HTTP leave 成功,服务端通过期限和媒体清理收尾。
查询和 resume 的用法同 Web,只能恢复当前登录的有效会话,默认不采集。App 仍应在路由卸载时主动 leave。
权限与发布状态
macOS 采集描述、entitlements、CSP 及媒体地址配置见快速集成。Windows、macOS、Linux 的实际设备和 WebView 支持需分别验收;supported 不是设备互通证据。
本轮已完成源码类型检查和窗口生命周期替身测试,尚未发布新的 SDK 制品或运行真实各系统 WebView 验收。
