Skip to content

发布与订阅事件

发布与订阅事件用于监听音视频流的发布和订阅状态变化。

audioPublishStateChanged

音频推流变更回调。

事件签名

typescript
audioPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
oldStateAliRtcPublishState之前的推流状态
newStateAliRtcPublishState当前的推流状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('audioPublishStateChanged', (oldState, newState, elapseSinceLastState, channel) => {
  console.log('音频推流状态变化:', oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateAudioPublishStateUI(newState);
});

videoPublishStateChanged

视频推流变更回调。

事件签名

typescript
videoPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
oldStateAliRtcPublishState之前的推流状态
newStateAliRtcPublishState当前的推流状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('videoPublishStateChanged', (oldState, newState, elapseSinceLastState, channel) => {
  console.log('视频推流状态变化:', oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateVideoPublishStateUI(newState);
});

dualStreamPublishStateChanged

次要流推流变更回调。

事件签名

typescript
dualStreamPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
oldStateAliRtcPublishState之前的推流状态
newStateAliRtcPublishState当前的推流状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('dualStreamPublishStateChanged', (oldState, newState, elapseSinceLastState, channel) => {
  console.log('次要流推流状态变化:', oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateDualStreamPublishStateUI(newState);
});

screenSharePublishStateChanged

屏幕分享推流变更回调。

事件签名

typescript
screenSharePublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
oldStateAliRtcPublishState之前的推流状态
newStateAliRtcPublishState当前的推流状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('screenSharePublishStateChanged', (oldState, newState, elapseSinceLastState, channel) => {
  console.log('屏幕分享推流状态变化:', oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateScreenSharePublishStateUI(newState);
});

dataPublishStateChanged

DataChannel 推流变更回调。

事件签名

typescript
dataPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
oldStateAliRtcPublishState之前的推流状态
newStateAliRtcPublishState当前的推流状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('dataPublishStateChanged', (oldState, newState, elapseSinceLastState, channel) => {
  console.log('DataChannel推流状态变化:', oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateDataPublishStateUI(newState);
});

audioSubscribeStateChanged

音频订阅情况变更回调。

事件签名

typescript
audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
uidstring用户ID
oldStateAliRtcSubscribeState之前的订阅状态
newStateAliRtcSubscribeState当前的订阅状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('audioSubscribeStateChanged', (uid, oldState, newState, elapseSinceLastState, channel) => {
  console.log(`用户 ${uid} 音频订阅状态变化:`, oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateAudioSubscribeStateUI(uid, newState);
});

videoSubscribeStateChanged

相机流订阅情况变更回调。

事件签名

typescript
videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
uidstring用户ID
oldStateAliRtcSubscribeState之前的订阅状态
newStateAliRtcSubscribeState当前的订阅状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('videoSubscribeStateChanged', (uid, oldState, newState, elapseSinceLastState, channel) => {
  console.log(`用户 ${uid} 相机流订阅状态变化:`, oldState, '->', newState);
  
  // 根据状态变化更新UI
  if (newState === AliRtcEngine.AliRtcSubscribeState.AliRtcSubscribeStateSubscribed) {
    // 开始播放视频
    engine.setRemoteViewConfig(videoElement, uid, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera);
  } else if (newState === AliRtcEngine.AliRtcSubscribeState.AliRtcSubscribeStateIdle) {
    // 停止播放视频
    engine.setRemoteViewConfig(null, uid, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera);
  }
});

subscribeStreamTypeChanged

大小流订阅情况变更回调。

事件签名

typescript
subscribeStreamTypeChanged: (uid: string, oldStreamType: AliRtcVideoStreamType, newStreamType: AliRtcVideoStreamType, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
uidstring用户ID
oldStreamTypeAliRtcVideoStreamType之前的订阅状态
newStreamTypeAliRtcVideoStreamType当前的订阅状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('subscribeStreamTypeChanged', (uid, oldStreamType, newStreamType, elapseSinceLastState, channel) => {
  console.log(`用户 ${uid} 大小流订阅状态变化:`, oldStreamType, '->', newStreamType);
  
  // 根据流类型变化更新UI
  updateStreamTypeUI(uid, newStreamType);
});

screenShareSubscribeStateChanged

屏幕分享流订阅情况变更回调。

事件签名

typescript
screenShareSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
uidstring用户ID
oldStateAliRtcSubscribeState之前的订阅状态
newStateAliRtcSubscribeState当前的订阅状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('screenShareSubscribeStateChanged', (uid, oldState, newState, elapseSinceLastState, channel) => {
  console.log(`用户 ${uid} 屏幕分享流订阅状态变化:`, oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateScreenShareSubscribeStateUI(uid, newState);
});

dataSubscribeStateChanged

DataChannel 订阅情况变更回调。

事件签名

typescript
dataSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void

参数说明

参数类型描述
uidstring用户ID
oldStateAliRtcSubscribeState之前的订阅状态
newStateAliRtcSubscribeState当前的订阅状态
elapseSinceLastStatenumber状态变更时间间隔(毫秒)
channelstring当前频道

使用示例

javascript
engine.on('dataSubscribeStateChanged', (uid, oldState, newState, elapseSinceLastState, channel) => {
  console.log(`用户 ${uid} DataChannel订阅状态变化:`, oldState, '->', newState);
  
  // 根据状态变化更新UI
  updateDataSubscribeStateUI(uid, newState);
});