|  | @@ -1,3 +1,5 @@
 | 
	
		
			
				|  |  | +import { Message } from 'element-ui';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @description WebSDK 实例化对象
 | 
	
		
			
				|  |  |   */
 | 
	
	
		
			
				|  | @@ -15,22 +17,6 @@ export function initSDK(data) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * @method startLive
 | 
	
		
			
				|  |  | - * @description 开启直播
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -export function startLive() {
 | 
	
		
			
				|  |  | -  rtc.startLive({
 | 
	
		
			
				|  |  | -    success(data) {
 | 
	
		
			
				|  |  | -      console.log(data);
 | 
	
		
			
				|  |  | -      alert('开启直播成功');
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    fail(data) {
 | 
	
		
			
				|  |  | -      alert(`开启直播失败:${data}`);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  });
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  |   * @method publishStream
 | 
	
		
			
				|  |  |   * @description 推送本地流
 | 
	
		
			
				|  |  |   */
 | 
	
	
		
			
				|  | @@ -39,17 +25,17 @@ export function publishStream() {
 | 
	
		
			
				|  |  |      streamName: 'main',
 | 
	
		
			
				|  |  |      // 推流成功,更新上麦结果
 | 
	
		
			
				|  |  |      success: function (stream) {
 | 
	
		
			
				|  |  | -      console.log(stream);
 | 
	
		
			
				|  |  | -      // rtc.updateMcResult({
 | 
	
		
			
				|  |  | -      //   pid: 1,
 | 
	
		
			
				|  |  | -      //   stid: stream.id(),
 | 
	
		
			
				|  |  | -      //   success: function (data) {
 | 
	
		
			
				|  |  | -      //     alert('更新上麦结果请求成功,此处可处理应用层逻辑' + JSON.stringify(data));
 | 
	
		
			
				|  |  | -      //   },
 | 
	
		
			
				|  |  | -      //   fail: function (data) {
 | 
	
		
			
				|  |  | -      //     alert('更新上麦结果请求失败,此处可处理应用层逻辑' + JSON.stringify(data));
 | 
	
		
			
				|  |  | -      //   }
 | 
	
		
			
				|  |  | -      // });
 | 
	
		
			
				|  |  | +      console.log('推流成功', stream);
 | 
	
		
			
				|  |  | +      rtc.updateMcResult({
 | 
	
		
			
				|  |  | +        pid: 1,
 | 
	
		
			
				|  |  | +        stid: stream.id(),
 | 
	
		
			
				|  |  | +        success: function (data) {
 | 
	
		
			
				|  |  | +          console.log('更新上麦结果请求成功,此处可处理应用层逻辑', data);
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        fail: function (data) {
 | 
	
		
			
				|  |  | +          alert('更新上麦结果请求失败:' + JSON.stringify(data));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      fail: function (str) {
 | 
	
		
			
				|  |  |        // 推流失败,更新上麦结果
 | 
	
	
		
			
				|  | @@ -59,6 +45,29 @@ export function publishStream() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | + * @method startLive
 | 
	
		
			
				|  |  | + * @description 开启直播
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +export function startLive() {
 | 
	
		
			
				|  |  | +  rtc.startLive({
 | 
	
		
			
				|  |  | +    success(data) {
 | 
	
		
			
				|  |  | +      console.log(data);
 | 
	
		
			
				|  |  | +      publishStream(); // 如果需要立即推流,执行 publish 方法
 | 
	
		
			
				|  |  | +      Message({
 | 
	
		
			
				|  |  | +        message: '开启直播成功',
 | 
	
		
			
				|  |  | +        type: 'success'
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    fail(data) {
 | 
	
		
			
				|  |  | +      Message({
 | 
	
		
			
				|  |  | +        message: `开启直播失败:${data}`,
 | 
	
		
			
				|  |  | +        type: 'warning'
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  |   * @method createLocalStram
 | 
	
		
			
				|  |  |   * @description 创建本地流
 | 
	
		
			
				|  |  |   */
 | 
	
	
		
			
				|  | @@ -75,7 +84,6 @@ export function createLocalStream() {
 | 
	
		
			
				|  |  |        // 创建本地流成功,将流展示到id为 live 的dom元素盒子中
 | 
	
		
			
				|  |  |        stream.show('live');
 | 
	
		
			
				|  |  |        startLive();
 | 
	
		
			
				|  |  | -      publishStream(stream); // 如果需要立即推流,执行 publish 方法
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      fail: function (data) {
 | 
	
		
			
				|  |  |        // 创建本地流失败,应用层处理
 | 
	
	
		
			
				|  | @@ -92,12 +100,30 @@ export function createLocalStream() {
 | 
	
		
			
				|  |  |  export function initListener(vue) {
 | 
	
		
			
				|  |  |    rtc.on('login_success', data => {
 | 
	
		
			
				|  |  |      console.log('登录成功', data);
 | 
	
		
			
				|  |  | +    Message({
 | 
	
		
			
				|  |  | +      message: '登录成功',
 | 
	
		
			
				|  |  | +      type: 'success'
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |      vue.roomData = data;
 | 
	
		
			
				|  |  | +    let canvasInitData = {
 | 
	
		
			
				|  |  | +      allowDraw: true, // 是否具有书写画笔权限(讲师权限) true / false
 | 
	
		
			
				|  |  | +      id: 'draw-parent',
 | 
	
		
			
				|  |  | +      pptDisplay: 0 // 文档展示方式。默认0,按窗口  1, 按宽度
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    // 如果直播已经开始,需将直播id传入sdk中,
 | 
	
		
			
				|  |  | +    if (data.live.status === 1) {
 | 
	
		
			
				|  |  | +      canvasInitData.liveId = data.live.id;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    // 初始化画板
 | 
	
		
			
				|  |  | +    rtc.canvasInit(canvasInitData);
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('login_failed', data => {
 | 
	
		
			
				|  |  |      console.log('登录失败', data);
 | 
	
		
			
				|  |  | -    alert('登录失败:' + JSON.stringify(data));
 | 
	
		
			
				|  |  | +    Message({
 | 
	
		
			
				|  |  | +      message: '登录失败:' + JSON.stringify(data),
 | 
	
		
			
				|  |  | +      type: 'warning'
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // 必须在加入房间成功的“conference_join”事件回调里创建本地流
 | 
	
	
		
			
				|  | @@ -113,15 +139,24 @@ export function initListener(vue) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // 房间全量信息事件
 | 
	
		
			
				|  |  |    rtc.on('room_context', roomData => {
 | 
	
		
			
				|  |  | -    console.log(JSON.parse(roomData));
 | 
	
		
			
				|  |  | +    vue.roomContext = JSON.parse(roomData);
 | 
	
		
			
				|  |  | +    console.log('房间全量信息事件', JSON.parse(roomData));
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('publish_stream', str => {
 | 
	
		
			
				|  |  |      console.log('直播已开启', str);
 | 
	
		
			
				|  |  | +    Message({
 | 
	
		
			
				|  |  | +      message: '直播已开启',
 | 
	
		
			
				|  |  | +      type: 'success'
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('end_stream', str => {
 | 
	
		
			
				|  |  |      console.log('直播已关闭', str);
 | 
	
		
			
				|  |  | +    Message({
 | 
	
		
			
				|  |  | +      message: '直播已关闭',
 | 
	
		
			
				|  |  | +      type: 'success'
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('switch_user_settings', settingData => {
 | 
	
	
		
			
				|  | @@ -129,8 +164,9 @@ export function initListener(vue) {
 | 
	
		
			
				|  |  |      console.log(settingData);
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  // 人员列表事件(人员麦序变化时广播)
 | 
	
		
			
				|  |  |    rtc.on('speak_context', speakData => {
 | 
	
		
			
				|  |  | -    console.log(speakData); // 人员列表事件(人员麦序变化时广播)
 | 
	
		
			
				|  |  | +    vue.speakData = JSON.parse(speakData);
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('switch_settings', data => {
 | 
	
	
		
			
				|  | @@ -138,7 +174,7 @@ export function initListener(vue) {
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    rtc.on('allow_sub', stream => {
 | 
	
		
			
				|  |  | -    alert('监听到有流');
 | 
	
		
			
				|  |  | +    console.log('监听到有流');
 | 
	
		
			
				|  |  |      rtc.trySubscribeStream({
 | 
	
		
			
				|  |  |        tryStream: stream,
 | 
	
		
			
				|  |  |        success: function success(stream) {
 | 
	
	
		
			
				|  | @@ -289,6 +325,20 @@ export function getLiveStat() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | + * @description 推送桌面共享
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +export function publishShareStream() {
 | 
	
		
			
				|  |  | +  rtc.publishShareStream({
 | 
	
		
			
				|  |  | +    success: function (stream) {
 | 
	
		
			
				|  |  | +      console.log('推送桌面共享成功', stream);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    fail: function (str) {
 | 
	
		
			
				|  |  | +      console.log(str);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  |   * @description 开启、结束、暂停、恢复录制
 | 
	
		
			
				|  |  |   * @param { String } status: 'start' 开启, 'end' 结束, 'pause' 暂停, 'resume' 恢复
 | 
	
		
			
				|  |  |   */
 | 
	
	
		
			
				|  | @@ -304,6 +354,42 @@ export function liveRecord(status) {
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// 排麦
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @description 老师端发起邀请,邀请学生上麦。(举手模式)
 | 
	
		
			
				|  |  | + * @param {String} uid 被邀请用户id
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +export function invite(uid) {
 | 
	
		
			
				|  |  | +  rtc.invite({
 | 
	
		
			
				|  |  | +    uid: uid,
 | 
	
		
			
				|  |  | +    success: function (str) {
 | 
	
		
			
				|  |  | +      console.log('邀请上麦成功', str);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    fail: function (data) {
 | 
	
		
			
				|  |  | +      console.log(data);
 | 
	
		
			
				|  |  | +      Message({
 | 
	
		
			
				|  |  | +        type: 'error',
 | 
	
		
			
				|  |  | +        message: `邀请上麦失败:${data.errorMsg}`
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @description 学生端接受老师的上麦邀请,同意上麦
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +export function inviteAccept() {
 | 
	
		
			
				|  |  | +  rtc.inviteAccept({
 | 
	
		
			
				|  |  | +    success: function (str) {
 | 
	
		
			
				|  |  | +      console.log('接受邀请成功', str);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    fail: function (data) {
 | 
	
		
			
				|  |  | +      console.log('接受邀请失败', data);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // 聊天组件
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -314,6 +400,10 @@ export function sendMsg(msg) {
 | 
	
		
			
				|  |  |    rtc.sendMsg(msg);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -export function roomUpdate() {
 | 
	
		
			
				|  |  | -  rtc.roomUpdate();
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @description 房间配置项更新
 | 
	
		
			
				|  |  | + * @param {Object} option 房间配置项 (具体看2.0 https://doc.bokecc.com/class/developer/web/chat.html),以键值对的形式传
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +export function roomUpdate(option) {
 | 
	
		
			
				|  |  | +  rtc.roomUpdate(option);
 | 
	
		
			
				|  |  |  }
 |