通过阅读本文,您可以了解Web SDK回调及监听的接口详情。

注意 自2020年2月起,阿里云RTC将逐步停止对旧版本SDK的支持与维护,请使用1.9.1及以上版本SDK。更多信息,请参见SDK下载

目录

API 描述 支持的最低版本
onPublisher 发布流回调。 1.2
onUnPublisher 取消发布流回调。 1.2
onMediaStream 订阅流成功回调(1.10及以上版本不需要该接口回调)。 1.2
onJoin 加入频道回调。 1.2
onLeave 离开频道回调。 1.2
onError 错误异常回调。 1.2
onBye 被服务器踢出或者频道关闭时回调。 1.11
onUpdateRole 角色切换回调。 1.12
onNotify 用户状态变化回调。 1.12.1
onAudioLevel 音频能量值回调。 1.13.0
onMedia 推流和订阅的音视频数据回调。 1.14.0
onMediaStreamUpdate 订阅流返回回调。 1.15.4
onNetworkQuality 网络质量回调。 1.16.0
onAudioMixingPlayed 伴奏开始播放回调。 1.16.0
onAudioMixingFinished 伴奏播放结束回调。 1.16.0
onPublishChange 本地发布流回调(自动推流)。 1.17.0
onSubscribeChange 自动订阅回调。 1.17.0
onShareSystemAudioStart 共享声音通知回调。 1.17.0

接口详情

  • onPublisher:发布流回调。当频道里的其他人发布本地流时,触发本回调。
    aliWebrtc.on('onPublisher',(publisher) =>{
        //远程发布者用户Id
        console.log(publisher.userId);
        //远程发布名字
        console.log(publisher.displayName);
        //远程流内容,streamConfigs是数组
        console.log(publisher.streamConfigs);
      });
  • onUnPublisher:取消发布流回调。当频道里的其他人取消发布本地流时,触发本回调。
    aliWebrtc.on('onUnPublisher',(publisher) =>{
        //远程发布者用户Id
        console.log(publisher.userId);
        //远程发布名字
        console.log(publisher.displayName);
    });
  • onMediaStream:订阅流成功回调。当订阅远程流成功时触发,会返回远程流的Stream对象,通过H5 Video或Audio播放。
    说明 1.10及以上版本不支持该回调。
    aliWebrtc.on('onMediaStream',(subscriber, stream) =>{
         var video = document.getElementByTag('video');
         aliWebrtc.setDisplayRemoteVideo(
            subscriber,        // onMediaStream中返回的参数
            video,             // html中用于显示stream对象的video元素
            stream             // onMediaStream中返回的参数
         )
     });
  • onJoin:加入频道回调。当有其他用户加入频道时,触发onJoin回调。
    aliWebrtc.on('onJoin',(data) =>{
       console.log(data.userId);
       console.log(data.displayName  + " 加入频道");
     });
  • onLeave:离开频道回调。当其他用户离开频道时,触发onLeave回调。
    aliWebrtc.on('onLeave',(data) =>{
       console.log(data.userId);
       console.log(data.displayName  + " 离开频道");
     });
  • onError:错误异常回调。当有错误发生时,触发onError回调。
    aliWebrtc.on('onError',(error) =>{
       var msg = error && error.message ? error.message : error;
       if (msg && msg.indexOf('no session') > 0) {
            error = "请重新登录:" + msg;
       }
       console.log('错误:' + msg);
     });
  • onBye:被服务器踢出或者频道关闭时回调。
    aliWebrtc.on('onBye',(message) =>{ 
    //1:被服务器踢出 
    //2:频道关闭 
    //3:同一个ID在其他端登录,被服务器踢出 
    console.log(message.code); 
    });
  • onUpdateRole:角色切换回调。
    aliWebrtc.on("onUpdateRole",(data)=>{
        console.log(data);
    })
    说明 在互动模式下,当调用setClientRole接口返回true,并且收到onUpdateRole回调获取到正确新值时才表示切换成功。
  • onNotify:用户状态变化回调。
    aliWebrtc.on("onNotify",(data)=>{
        console.log(data);
    })
    说明
    • 本地或远端用户的推流状态变化时(调用muteLocalMic、muteLocalCamera)会收到onNotify回调。
    • 该回调返回的data与调用getUserList接口返回的结果相同。
  • onAudioLevel:音频能量值回调。
    说明 需要设置enableAudioVolumeIndicator后回调,每秒返回一次(返回每秒音频能量最大值)。
    aliWebrtc.on("onAudioLevel", (data) => {
        console.log(data)
    })
    返回结果说明:
    • 当您推了音频流,返回数组中userId为字符串0的一项,是自己的音频信息。
    • 当您订阅了其他用户的音频流,该数组中会包含订阅用户的音频信息。
    • 具体数组各项的信息如下所示:
      返回值 类型 描述
      userId String 订阅用户userId,用户自己的userId为0。
      displayName String 用户名。
      level Number 音频能量值,取值范围0~100。
      buffer Array 每秒内音频PCM的数据。
  • onMedia:推流和订阅的音视频数据回调。
    aliWebrtc.on("onMedia", (data) => {
        console.log(data)
    })
    说明
    • 该回调每秒返回一次信息。
    • 推流数据只有bytesSentPerSecond,订阅数据仅有bytesReceivedPerSecond。
    返回值 类型 描述
    userId String 订阅用户userId,用户自己的userId为0。
    rtt Number 网络延迟,单位:毫秒。表示SDK到阿里云服务器的一次网络往返时间,该值越小越好。 一般低于50 ms的延迟相对理想,而高于100 ms的延迟会引起较大的通话延时。
    audio Object 音频流
    level Number

    声音能量值,取值范围:0~1。

    camera Object 相机流
    width Number 宽度。
    height Number 高度。
    fps Number 帧率。
    screen Object 屏幕流
    width Number 宽度。
    height Number 高度。
    fps Number 帧率。
    bytesSentPerSecond Number 每秒发送的字节数(仅推流使用)。
    bytesReceivedPerSecond Number 每秒接收到的字节数(仅订阅使用)。
  • onMediaStreamUpdate:订阅流返回回调。
    aliWebrtc.on("onMediaStreamUpdate", (data) => {
      console.log(data)
    })
    返回值 类型 描述
    userId String 订阅用户的ID。
    mediaStream MediaStream 远端流。
    说明 通过mediaStream的getTrack()方法获取track,进行自定义播放。track.id用来区分track类型,如下表所示。
    track.id 描述
    sophon_video_camera_large 摄像头大流。
    sophon_video_camera_small 摄像头小流。
    sophon_video_screen_share 屏幕共享流。
    sophon_audio 音频流。
  • onNetworkQuality:网络质量回调。
    aliWebrtc.on("onNetworkQuality", (data) => {
        console.log(data)
    })
    返回值 类型 描述
    uplinkNetworkQuality Number 上行网络质量,网络质量详情如下所示。
    downlinkNetworkQuality Number 下行网络质量,网络质量详情如下所示。
    网络质量 描述
    NETWORK_QUALITY_UNKNOWN 0 网络质量未知,即没有推流或这没有订阅。
    NETWORK_QUALITY_EXCELLENT 1 网络极好。
    NETWORK_QUALITY_GOOD 2 网络好,用户主观感受和极好差不多,但是码率可能略低于极好。
    NETWORK_QUALITY_POOR 3 用户主观感受有瑕疵但不影响沟通。
    NETWORK_QUALITY_BAD 4 勉强能沟通但不顺畅。
    NETWORK_QUALITY_VERYBAD 5 网络质量非常差,基本不能沟通。
    NETWORK_QUALITY_DISCONNECT 6 网络断开。
  • onAudioMixingPlayed:伴奏开始播放回调。
    aliWebrtc.on("onAudioMixingPlayed", () => {
        console.log("伴奏开始或恢复播放")
    })
  • onAudioMixingFinished:伴奏播放结束回调。
    aliWebrtc.on("onAudioMixingFinished", () => {
        console.log("伴奏播放结束")
    })
  • onPublishChange:本地发布流回调(自动推流)。
    aliWebrtc.on('onPublishChange', (streamList) => {
      // 自动推送的流内容,streamList 是数组,具体返回值如下
      console.log(streamList);
    });
    说明 开启自动推流以后,每次发布的流内容发生改变都会触发。
  • onSubscribeChange:自动订阅回调。
    aliWebrtc.on('onPublishChange', (publisher) => {
        // 自动订阅的用户Id
        console.log(publisher.userId);
        // 自动订阅的用户名
        console.log(publisher.displayName);
        // 自动订阅的远程流内容,streamConfigs是数组
        console.log(publisher.streamConfigs);
    });
  • onShareSystemAudioStart:共享声音通知回调。
    aliWebrtc.on('onShareSystemAudioStart', () => {
      console.log('您已分享系统中的音频');
    });
    说明 只有本地会收到此通知,远端不会收到此通知。