Appearance
发布与订阅事件
发布与订阅事件用于监听音视频流的发布和订阅状态变化。
audioPublishStateChanged
音频推流变更回调。
事件签名
typescript
audioPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| oldState | AliRtcPublishState | 之前的推流状态 |
| newState | AliRtcPublishState | 当前的推流状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| oldState | AliRtcPublishState | 之前的推流状态 |
| newState | AliRtcPublishState | 当前的推流状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| oldState | AliRtcPublishState | 之前的推流状态 |
| newState | AliRtcPublishState | 当前的推流状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| oldState | AliRtcPublishState | 之前的推流状态 |
| newState | AliRtcPublishState | 当前的推流状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| oldState | AliRtcPublishState | 之前的推流状态 |
| newState | AliRtcPublishState | 当前的推流状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
| oldState | AliRtcSubscribeState | 之前的订阅状态 |
| newState | AliRtcSubscribeState | 当前的订阅状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
| oldState | AliRtcSubscribeState | 之前的订阅状态 |
| newState | AliRtcSubscribeState | 当前的订阅状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
| oldStreamType | AliRtcVideoStreamType | 之前的订阅状态 |
| newStreamType | AliRtcVideoStreamType | 当前的订阅状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
| oldState | AliRtcSubscribeState | 之前的订阅状态 |
| newState | AliRtcSubscribeState | 当前的订阅状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
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参数说明
| 参数 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
| oldState | AliRtcSubscribeState | 之前的订阅状态 |
| newState | AliRtcSubscribeState | 当前的订阅状态 |
| elapseSinceLastState | number | 状态变更时间间隔(毫秒) |
| channel | string | 当前频道 |
使用示例
javascript
engine.on('dataSubscribeStateChanged', (uid, oldState, newState, elapseSinceLastState, channel) => {
console.log(`用户 ${uid} DataChannel订阅状态变化:`, oldState, '->', newState);
// 根据状态变化更新UI
updateDataSubscribeStateUI(uid, newState);
});