跳到主要内容

房间事件回调

开发者可通过设置 RCRTCEngine 中的不同函数回调方法来监听房间内远端用户的状态及资源变化。设置监听时参数为空,则表示取消已设置的监听。

状态相关

1. 远端用户加入通知

当有远端用户加入时触发。因用户加入房间后才能发布资源,该回调代表这名用户刚刚加入,此时并无任何资源发布,所以此刻也订阅不到该用户的任何媒体流。

方法

JavaScript
rtcEngine.setOnUserJoinedListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID

示例代码

JavaScript
rtcEngine.setOnUserJoinedListener((roomId, userId) => {
console.log('远端用户加入房间:', userId, roomId);
});

2. 远端用户离开通知

当有远端用户离开房间时触发,此时 SDK 会自动取消订阅该用户已发布的流,无需手动调用 unsubscribe

方法

JavaScript
rtcEngine.setOnUserLeftListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID

示例代码

JavaScript
rtcEngine.setOnUserLeftListener((roomId, userId) => {
console.log('远端用户离开房间:', userId, roomId);
});

3. 远端用户掉线通知

当有远端用户掉线时触发,代表该用户意外与融云服务断连超过 1 分钟。网络不好、App 意外崩溃或用户主动杀进程等情况,都会造成客户端与融云服务断连。如 1 分钟内没有恢复,则会被服务判定掉线,此时 SDK 会自动取消订阅该用户的所有资源,无需手动调用 unsubscribe

方法

JavaScript
rtcEngine.setOnUserOfflineListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID

示例代码

JavaScript
rtcEngine.setOnUserOfflineListener((roomId, userId) => {
console.log('远端用户掉线:', userId, roomId);
});

4. 远端用户资源状态变更通知

当远端用户调用了 muteLocalStream 方法时触发。

方法

JavaScript
rtcEngine.setOnRemoteStateChangedListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID
typeRCRTCMediaType远端用户变更的资源类型
disabledBoolean远端用户更新后的值,true 代表资源静默,false 代表恢复正常

示例代码

JavaScript
rtcEngine.setOnRemoteStateChangedListener((roomId, userId, type, disabled) => {
console.log('远端用户资源状态变更:', userId, type, disabled);
});

资源相关

1. 远端用户资源发布通知

当远端用户发布资源时触发。

方法

JavaScript
rtcEngine.setOnRemotePublishedListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID
typeRCRTCMediaType远端用户发布的资源类型

示例代码

JavaScript
rtcEngine.setOnRemotePublishedListener((roomId, userId, type) => {
console.log('远端用户发布资源:', userId, type);
});

2. 远端用户资源取消发布通知

当远端用户取消发布资源时触发,接收到后 SDK 会自动取消订阅相应资源。开发者也可以根据资源类型,来给用户做出相应的提示。

方法

JavaScript
rtcEngine.setOnRemoteUnpublishedListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID
typeRCRTCMediaType远端用户取消发布的资源类型

示例代码

JavaScript
rtcEngine.setOnRemoteUnpublishedListener((roomId, userId, type) => {
console.log('远端用户取消发布资源:', userId, type);
});

3. 合流资源发布通知(仅限直播模式下观众端使用)

当 MCU 服务器发布资源时触发。

方法

JavaScript
rtcEngine.setOnRemoteLiveMixPublishedListener(callback);

回调参数

参数类型说明
typeRCRTCMediaType发布的资源类型

示例代码

JavaScript
rtcEngine.setOnRemoteLiveMixPublishedListener((type) => {
console.log('合流资源发布:', type);
});

4. 合流资源取消发布通知(仅限直播模式下观众端使用)

当 MCU 服务器取消发布资源时触发。

方法

JavaScript
rtcEngine.setOnRemoteLiveMixUnpublishedListener(callback);

回调参数

参数类型说明
typeRCRTCMediaType取消发布的资源类型

示例代码

JavaScript
rtcEngine.setOnRemoteLiveMixUnpublishedListener((type) => {
console.log('合流资源取消发布:', type);
});

首帧回调

1. 远端用户发布的视频资源首帧回调

方法

JavaScript
rtcEngine.setOnRemoteFirstFrameListener(callback);

回调参数

参数类型说明
roomIdString房间 ID
userIdString远端用户 ID
typeRCRTCMediaType资源类型

示例代码

JavaScript
rtcEngine.setOnRemoteFirstFrameListener((roomId, userId, type) => {
console.log('远端用户视频首帧:', userId, type);
});

2. 合流视频资源首帧回调(仅限直播模式下观众端使用)

方法

JavaScript
rtcEngine.setOnRemoteLiveMixFirstFrameListener(callback);

回调参数

参数类型说明
typeRCRTCMediaType资源类型

示例代码

JavaScript
rtcEngine.setOnRemoteLiveMixFirstFrameListener((type) => {
console.log('合流视频首帧:', type);
});