房间事件回调
开发者可通过设置 RCRTCEngine 中的不同函数回调方法来监听房间内远端用户的状态及资源变化。设置监听时参数为空,则表示取消已设置的监听。
提示
设置监听与 RCRTCEngine.create()
方法需要在同一页面内。如果需要在其他页面设置监听,可以通过 uni.$emit('事件名', 参数)
将事件转发出去, 其他页面通过uni.$on('事件名', 回调方法)
监听。
状态相关
1. 远端用户加入通知
当有远端用户加入时触发。因用户加入房间后才能发布资源,该回调代表这名用户刚刚加入,此时并无任何资源发布,所以此刻也订阅不到该用户的任何媒体流。
方法
JavaScript
engine.setOnUserJoinedListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
示例代码
JavaScript
engine.setOnUserJoinedListener(({userId}) => {
console.log('远端用户加入:', userId);
});
2. 远端用户离开通知
当有远端用户离开房间时触发,此时 SDK 会自动取消订阅该用户已发布的流,无需手动调用 unsubscribe
。
方法
JavaScript
engine.setOnUserLeftListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
roomId | String | 远端用户所在的房间 ID |
示例代码
JavaScript
engine.setOnUserLeftListener(({userId, roomId}) => {
console.log('远端用户离开:', userId, '房间:', roomId);
});
3. 远端用户掉线通知
当有远端用户掉线时触发,代表该用户意外与融云服务断连超过 1 分钟。网络不好、App 意外崩溃或用户主动杀进程等情况,都会造成客户端与融云服务断连。如 1 分钟内没有恢复,则会被服务判定掉线,此时 SDK 会自动取消订阅该用户的所有资源,无需手动调用 unsubscribe
。
方法
JavaScript
engine.setOnUserOfflineListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
roomId | String | 远端用户所在的房间 ID |
示例代码
JavaScript
engine.setOnUserOfflineListener(({userId, roomId}) => {
console.log('远端用户掉线:', userId, '房间:', roomId);
});
4. 远端用户资源状态变更通知
当远端用户调用了 muteLocalStream
方法时触发。
方法
JavaScript
engine.setOnRemoteStateChangedListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
roomId | String | 远端用户所在的房间 ID |
type | RCRTCMediaType | 远端用户变更的资源类型 |
disabled | Boolean | 远端用户更新后的值,true 代表资源静默,false 代表恢复正常 |
示例代码
JavaScript
engine.setOnRemoteStateChangedListener(({userId, roomId, type, disabled}) => {
console.log('远端用户资源状态变更:', userId, '类型:', type, '状态:', disabled);
});
资源相关
1. 远端用户资源发布通知
当远端用户发布资源时触发。
方法
JavaScript
engine.setOnRemotePublishedListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
roomId | String | 远端用户所在的房间 ID |
type | RCRTCMediaType | 远端用户发布的资源类型 |
示例代码
JavaScript
engine.setOnRemotePublishedListener(({userId, roomId, type}) => {
console.log('远端用户发布资源:', userId, '类型:', type);
});
2. 远端用户资源取消发布通知
当远端用户取消发布资源时触发,接收到后 SDK 会自动取消订阅相应资源。开发者也可以根据资源类型,来给用户做出相应的提示。
方法
JavaScript
engine.setOnRemoteUnpublishedListener();
回调参数
参数 | 类型 | 说明 |
---|---|---|
userId | String | 远端用户 ID |
roomId | String | 远端用户所在的房间 ID |
type | RCRTCMediaType | 远端用户取消发布的资源类型 |
示例代码
JavaScript
engine.setOnRemoteUnpublishedListener(({userId, roomId, type}) => {
console.log('远端用户取消发布资源:', userId, '类型:', type);
});
3. 合流资源发布通知(仅限直播模式下观众端使用)
当 MCU 服务器发布资源时触发。
方法
JavaScript
engine.setOnRemoteLiveMixPublishedListener();