当前位置:首页 > React

react如何使用agora

2026-03-31 09:18:31React

使用 React 集成 Agora 实时音视频 SDK

在 React 项目中集成 Agora 实时音视频 SDK 需要安装 SDK 并初始化客户端。以下是一个基本实现流程:

安装 Agora SDK 通过 npm 或 yarn 安装 Agora SDK:

npm install agora-rtc-sdk
# 或
yarn add agora-rtc-sdk

初始化 Agora 客户端 在 React 组件中导入并初始化 Agora 客户端:

import React, { useEffect, useRef } from 'react';
import AgoraRTC from 'agora-rtc-sdk';

const VideoCall = () => {
  const clientRef = useRef(null);
  const localStreamRef = useRef(null);

  useEffect(() => {
    // 初始化客户端
    clientRef.current = AgoraRTC.createClient({ mode: 'rtc', codec: 'h264' });

    return () => {
      // 清理资源
      if (localStreamRef.current) {
        localStreamRef.current.close();
      }
      if (clientRef.current) {
        clientRef.current.leave();
      }
    };
  }, []);

  // 加入频道函数
  const joinChannel = async (appId, channel, token, uid) => {
    try {
      await clientRef.current.init(appId);
      await clientRef.current.join(token, channel, uid);

      // 创建本地流
      localStreamRef.current = AgoraRTC.createStream({
        audio: true,
        video: true,
        screen: false
      });

      await localStreamRef.current.init();
      localStreamRef.current.play('local-stream');
      await clientRef.current.publish(localStreamRef.current);
    } catch (error) {
      console.error('加入频道失败:', error);
    }
  };

  return (
    <div>
      <div id="local-stream" style={{ width: '320px', height: '240px' }}></div>
      <button onClick={() => joinChannel('YOUR_APP_ID', 'test', null, null)}>
        加入频道
      </button>
    </div>
  );
};

export default VideoCall;

处理远程流

添加远程流处理逻辑以显示其他用户的视频:

useEffect(() => {
  if (!clientRef.current) return;

  const handleStreamAdded = (evt) => {
    const remoteStream = evt.stream;
    const id = remoteStream.getId();
    clientRef.current.subscribe(remoteStream, (err) => {
      if (err) {
        console.error('订阅流失败:', err);
        return;
      }
      remoteStream.play(`remote-stream-${id}`);
    });
  };

  clientRef.current.on('stream-added', handleStreamAdded);

  return () => {
    clientRef.current.off('stream-added', handleStreamAdded);
  };
}, []);

添加 UI 元素

在组件中添加远程视频容器:

return (
  <div>
    <div id="local-stream" style={{ width: '320px', height: '240px' }}></div>
    <div id="remote-streams">
      {/* 远程流将在这里动态添加 */}
    </div>
    <button onClick={() => joinChannel('YOUR_APP_ID', 'test', null, null)}>
      加入频道
    </button>
  </div>
);

注意事项

确保替换代码中的 YOUR_APP_ID 为实际的 Agora 项目 App ID。可以从 Agora 控制台获取。

考虑使用环境变量存储敏感信息如 App ID 和 Token。

对于生产环境,建议实现 Token 服务器端生成机制,而不是在前端硬编码。

Agora 提供了 React 专用的 UI 组件库 agora-rtc-react,可以简化开发流程:

react如何使用agora

npm install agora-rtc-react

分享给朋友:

相关文章

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

uniapp中如何使用iconfont

uniapp中如何使用iconfont

使用 Iconfont 在 Uniapp 中的步骤 下载 Iconfont 资源 访问 Iconfont 官网,选择需要的图标并添加到项目。下载时选择 Font class 格式,解压后会得到 .tt…

react如何引入

react如何引入

引入React的方法 React可以通过多种方式引入项目,具体取决于项目需求和开发环境。以下是常见的几种方法: 通过CDN引入 在HTML文件中直接通过CDN链接引入React和ReactDOM:…

react如何切换class

react如何切换class

动态切换 React 组件的类名 在 React 中动态切换类名可以通过多种方式实现,以下是常见的几种方法: 使用模板字符串和状态管理 function MyComponent() {…

react如何编码参数

react如何编码参数

编码参数的方法 在React中,编码参数通常涉及URL查询参数或路由参数的编码和解码。以下是几种常见场景的处理方法: URL查询参数编码 使用encodeURIComponent对参数进行编码,避免…

如何部署react项目

如何部署react项目

部署 React 项目到生产环境 方法一:使用静态服务器部署(如 Nginx、Apache) 构建生产版本:运行 npm run build 或 yarn build,生成优化后的静态文件(位于 b…