您可以下载安装我们的 Demo 体验实时互动课堂的能力效果,包括语音、视频、屏幕分享等上课方式,还封装了老师开始问答、学生举手、老师邀请学生上台回答、结束回答等相关能力。
教师端 | 学生端 |
---|---|
如需快速实现实时互动课堂功能,可以直接基于我们提供的 Demo 进行修改适配,也可以使用我们提供的 trtc-electron-education 组件并实现自定义 UI 界面。
TestEduDemo
,单击【创建】。说明:本功能同时使用了腾讯云 实时音视频 TRTC 和 即时通信 IM 两个基础 PAAS 服务,开通实时音视频后会同步开通即时通信 IM 服务。 即时通信 IM 属于增值服务,详细计费规则请参见 即时通信 IM 价格说明。
TRTCEducation/app/debug/GenerateTestUserSig.js
文件。GenerateTestUserSig.js
文件中的相关参数:注意:本文提到的生成 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通 Demo 和功能调试。
正确的 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig。
// 安装 yarn,demo 基于 yarn 管理
npm install yarn -g
// 安装所需依赖
yarn install
// 开发调试
yarn dev
// 打包
yarn package
注意:
- 安装依赖过程中,如遇到 Electron 下载慢甚至卡住不动等问题,您可以参考 Electron 常见问题收录 文档解决。
- 只能使用 Mac 打包 Mac 包,使用 Windows 电脑打包 Windows 包。
Demo 所用框架技术如下:
如下表格列出了各个文件及其所对应的 UI 界面,以便于您进行二次调整:
文件 | 功能描述 |
---|---|
app/containers/HomePage.tsx | 进入教室 UI 的实现代码 |
app/containers/ClassRoomPage.tsx | 教室 UI 的实现代码 |
app/components/TeacherClass.tsx | 教室-老师端 UI 的实现代码 |
app/components/StudentClass.tsx | 教室-学生端 UI 的实现代码 |
app/components/Chat.tsx | 教室-聊天室 UI 的实现代码 |
app/components/UserList.tsx | 教室-成员列表 UI 的实现代码 |
如果 Demo 中默认实现的 UI 不符合您的预期,您可以按需实现自己的用户界面,即只使用我们封装好的 trtc-electron-education 组件所提供的音视频能力,自行实现 UI 部分。
// yarn 方式引入
yarn add trtc-electron-education
// npm 方式引入
npm i trtc-electron-education --save
初始化组件,其中几个必填的关键参数介绍如下表所示。
参数 | 类型 | 说明 |
---|---|---|
sdkAppId | number | 必填参数,您可以在 实时音视频控制台 中查看 SDKAppID。 |
userID | string | 必填参数,用户 ID,可以由您的帐号体系指定。 |
userSig | string | 必填参数,身份签名(相当于登录密码),由 userID 计算得出,具体计算方法请参见 如何计算 UserSig。 |
import TrtcElectronEducation from 'trtc-electron-education';
const rtcClient = new TrtcElectronEducation({
sdkAppId: 1400***803,
userID: '123'
userSig: 'eJwtzM9****-reWMQw_'
});
老师端调用组件 createRoom 方法创建教室。
const params = {
classId, // 教室 ID
nickName // 昵称
}
rtcClient.createRoom(params).then(() => {
//成功创建教室
})
老师端调用组件的 enterRoom 方法开始上课。
rtcClient.enterRoom({
role: 'teacher', // 角色
classId // 教室 ID
})
老师端调用组件的 openCamera 方法打开自己的摄像头。
const domEle = document.getElementById('test');
rtcClient.openCamera(domEle)
老师端可共享自己的屏幕给学生端观看,例如播放 PPT、课件等。
a. 需要先调用组件的 getScreenShareList 方法获取窗口列表。
const screenList = rtcClient.getScreenShareList()
b. 调用组件的 startScreenCapture 开始推屏幕分享的流。
rtcClient.startScreenCapture({
type,// 采集源类型
sourceId,// 采集源 ID,对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕 ID
sourceName // 采集源名称,UTF8 编码
})
上课过程中,老师如果想提问与学生互动,可以调用组件的 startQuestionTime 方法开启问答时间,学生端收到该指令后,可以举手申请回答问题。
rtcClient.startQuestionTime(classId) // classId 是教室 ID
学生举手后,老师端可调用组件的 inviteToPlatform 方法邀请学生上台发言,被邀请的学生自动开麦。
rtcClient.inviteToPlatform(userID) // 邀请学生上台的 userID
老师端可调用组件的 finishAnswering 方法禁学生的麦克风。
rtcClient.finishAnswering(userID)// 禁麦学生的 userID
学生端调用组件的 enterRoom 方法进入教室,准备听课。
rtcClient.enterRoom({
role: 'student', // 角色
classId // 教室 ID
})
老师端开放举手问答后,学生端可调用组件的 raiseHand 方法申请发言。
rtcClient.raiseHand()
老师端和学生端可以使用聊天室互发一些文本消息。
const params = {
classId: classId, // 教室 ID
message: '您好' // 消息文本
}
rtcClient.sendTextMessage(params) // 发送聊天室消息
本文以基金交易数据处理为例,介绍将数据存储在OSS,使用DataLakeAnalytics进行S...
1. 接口描述 接口请求域名: gaap.tencentcloudapi.com 。 本接口(DescribeSecu...
本文介绍如何使用Ali-Tomcat将使用HSF框架开发的应用迁移为Dubbo框架开发的应用...
腾讯云 API 使用签名方法(Signature)对接口进行鉴权。每一次请求都需要在请求...
很多的企业在建设网站或是开展电子商务时,相信都会需要 托管服务器 或者 租用服...
对比项 说明 相关操作 导入 将外部镜像文件导入华为云,制作成私有镜像。 支持的...
ALIYUN::RAM::Role类型用于创建RAM角色。 语法 { "Type": "ALIYUN::RAM::Role", ...
本文介绍如何在日志审计服务中查看从云产品接入的全局数据。 查看日志审计全局数...
点击订阅新品发布会 新产品、新版本、新技术、新功能、价格调整,评论在下方,下...
本文介绍如何通过日志服务控制台采集RDS SQL审计日志。 前提条件 已创建RDS实例...