You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Zoom Video SDK在React-Vite-Electron中实现远程控制/访问的技术咨询

React-Vite-Electron 中基于 Zoom Video SDK 实现远程控制/访问指引

前置准备

  • 在 Zoom 开发者平台创建 Video SDK 应用,获取 SDK Key 和 SDK Secret
  • 项目内安装 Zoom Video SDK:
    npm install @zoom/videosdk
    # 或
    yarn add @zoom/videosdk
    
  • 配置 Electron 渲染进程权限:确保 webPreferences 中开启 nodeIntegration(或通过 preload 脚本暴露必要能力),关闭 contextIsolation(或按需配置),避免 SDK 加载异常

核心实现步骤

1. 初始化 Zoom Video SDK

在 React 组件或 Electron 渲染进程中完成 SDK 初始化:

import ZoomVideo from '@zoom/videosdk';

const zoomClient = ZoomVideo.createClient();

// 初始化 SDK
const initZoomSDK = async () => {
  try {
    await zoomClient.init('en-US', 'CDN');
    console.log('Zoom SDK initialized');
  } catch (err) {
    console.error('SDK init failed:', err);
  }
};

2. 加入会议

必须通过后端生成临时 Token(禁止前端硬编码密钥),调用 join 方法进入会议:

const joinMeeting = async () => {
  const meetingNumber = '你的会议号';
  const userName = '参会者名称';
  const token = '后端生成的Token'; // 用 SDK Key/Secret 生成,参考 Zoom 官方 Token 生成逻辑

  try {
    await zoomClient.join(meetingNumber, token, userName, '');
    console.log('Joined meeting');
  } catch (err) {
    console.error('Join meeting failed:', err);
  }
};

3. 实现远程控制

远程控制依赖屏幕共享能力,需分发起方和接收方两步操作:

发起方开启屏幕共享

const startScreenShare = async () => {
  const shareService = zoomClient.getShareService();
  try {
    await shareService.startShare('screen');
    console.log('Screen share started');
  } catch (err) {
    console.error('Start share failed:', err);
  }
};

接收方请求远程控制

const requestRemoteControl = async () => {
  const shareService = zoomClient.getShareService();
  try {
    await shareService.requestRemoteControl();
  } catch (err) {
    console.error('Request remote control failed:', err);
  }
};

发起方同意控制请求

监听远程控制请求事件,处理同意逻辑:

const setupRemoteControlListener = () => {
  const shareService = zoomClient.getShareService();
  shareService.on('remote-control-request', async (payload) => {
    // 可弹窗确认后同意
    await shareService.approveRemoteControl(payload.userId);
    console.log('Remote control approved for user:', payload.userId);
  });
};

Electron 关键配置注意

在主进程 main.js 中配置 webPreferences:

const mainWindow = new BrowserWindow({
  webPreferences: {
    nodeIntegration: true,
    contextIsolation: false,
    enableRemoteModule: true, // 如需主渲染进程通信
  },
});
  • 打包时需配置系统权限:macOS 需添加屏幕录制权限,Windows 需开启对应的桌面访问权限,否则屏幕共享和远程控制会失效

常见问题排查

  • Token 无效:确保后端用 SDK Key/Secret 生成的 Token 包含正确的会议号和权限
  • 远程控制无响应:确认双方均已加入会议,发起方已开启屏幕共享,且同意了控制请求
  • SDK 加载失败:检查 Electron 版本与 Zoom Video SDK 的兼容性,或尝试在 preload 脚本中初始化 SDK

内容的提问来源于stack exchange,提问作者Fashad Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:46:16