agora监听事件

一、监听加入事件

通过sdk的监听事件,获取新加入房间直播的主播uid以及rtmp的url
并将url和uid存到数组中,存uid的作用是为了当有主播退出时,将渲染的数组中的视频流移除

//监听添加远端流
client.on("stream-added", e => {
      console.log("stream--add",e)
      let uid=e.uid
      client.subscribe(uid,(url,rotation)=> {
        Utils.log(`stream url ${url} subscribed successful`);
        let t_rtmpUrl=that.data.rtmpUrl
        let item={
          url:url,
          uid:e.uid
        }
        t_rtmpUrl.push(item)
        that.setData({
          rtmpUrl:t_rtmpUrl
        })

      }, e => {
        Utils.log(`stream subscribed failed ${e} ${e.code} ${e.reason}`);
      });
    });

二、监听移除事件

监听移除事件,返回的是uid的数组

     //移除远端订阅流
    client.on("stream-removed", e => {
      let uid = e.uid;
      console.log("remove===",e)
      Utils.log(`stream ${uid} removed`);
      this.removeMedia(uid);
     });

传入移除的uid数组,进行删除

removeMedia(uidList){
   let that=this
   let rtmpUrl=this.data.rtmpUrl
   let removeUids=[]
   for(let i=0;i<uidList.length;i++){
     for(let j=0;j<rtmpUrl.length;j++){
        if(uidList[i]==rtmpUrl[j].uid){
          removeUids.push(j)    
        }
     }   
    for(let k=0;k<removeUids.length;k++){
      rtmpUrl.splice(removeUids[k],1)
    }
    this.setData({
      rtmpUrl:rtmpUrl
    })
   }
},
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容