RTSRoom class
Constructors
-
RTSRoom([NativeClassOptions? options])
-
Properties
-
$resource
→ NativeResource
-
no setterinherited
-
hashCode
→ int
-
The hash code for this object.
no setterinherited
-
ready
→ Future<void>
-
Whether the instance is initialized
no setterinherited
-
runtimeType
→ Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
destroy()
→ FutureOr<void>
-
@detail api
@brief 退出并销毁调用 createRTSRoom{@link #RTCEngine#createRTSRoom} 所创建的房间实例。
override
-
joinRTSRoom(String token, UserInfo userInfo)
→ FutureOr<int>
-
@detail api
@brief 加入 RTS 房间。
调用 createRTSRoom{@link #RTCEngine#createRTSRoom} 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
@param token 动态密钥。用于对进房用户进行鉴权验证。
进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。Token 有效期及生成方式参看使用 Token 完成鉴权。
使用不同 AppID 的 App 是不能互通的。
请务必保证生成 Token 使用的 AppID 和创建引擎时使用的 AppID 相同,否则会导致加入房间失败。
@param userInfo 用户信息。参看 UserInfo{@link #UserInfo}。
@return
- 0:方法调用成功。
- 0: 成功。触发以下回调:
- 本端收到房间状态通知 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调。
- -1:roomID / userInfo.uid 包含了无效的参数。
- -2:已经在房间内。接口调用成功后,只要收到返回值为 0 ,且未调用 leaveRoom{@link #RTSRoom#leaveRoom} 成功,则再次调用进房接口时,无论填写的房间 ID 和用户 ID 是否重复,均触发此返回值。
调用失败时,具体失败原因会通过 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调告知。
@note
- 同一个 App ID 的同一个房间内,每个用户的用户 ID 必须是唯一的。如果两个用户的用户 ID 相同,则后进房的用户会将先进房的用户踢出房间,并且先进房的用户会收到 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调通知,错误类型详见 ERROR_CODE_DUPLICATE_LOGIN{@link #ErrorCode#ERROR_CODE_DUPLICATE_LOGIN}。
- 用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接,并触发 onConnectionStateChanged{@link #IRTCEngineEventHandler#onConnectionStateChanged} 回调。此时 SDK 会自动重试,直到成功重连。重连成功后,本地会收到 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调通知;如果加入房间的用户是可见用户,远端用户会收到 onUserJoined{@link #IRTSRoomEventHandler#onUserJoined} 回调通知。
-
leaveRoom()
→ FutureOr<int>
-
@detail api
@brief 离开 RTS 房间。
调用此方法结束通话过程,并释放所有通话相关的资源。
@return
- 0: 调用成功。如果用户是房间内可见用户,触发以下回调:
- 远端用户收到 onUserLeave{@link #IRTSRoomEventHandler#onUserLeave} 回调通知。
- < 0: 调用失败,参看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明。
@note
- 加入房间后,必须调用此方法结束通话,否则无法开始下一次通话。
- 此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,本地会收到 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调通知。你必须在收到 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged} 回调后,再销毁房间或引擎,或调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 再次加入房间。
- 调用 setUserVisibility{@link #RTCRoom#setUserVisibility} 将自身设为可见的用户离开房间后,房间内其他用户会收到 onUserLeave{@link #IRTSRoomEventHandler#onUserLeave} 回调通知。
-
nativeCall<T>(String method, [List? args, NativeMethodMeta? meta])
→ Future<T>
-
Call instance method
inherited
-
noSuchMethod(Invocation invocation)
→ dynamic
-
Invoked when a nonexistent method or property is accessed.
inherited
-
sendInstanceGet<T>(String property)
→ Future<T>
-
Get instance property
inherited
-
sendInstancePropertiesGet(dynamic nativeClass)
→ Future<Map<String, dynamic>>
-
Get instance properties
inherited
-
sendInstanceSet(String property, dynamic value)
→ Future<void>
-
Set instance property
inherited
-
sendRoomBinaryMessage(ArrayBuffer buffer)
→ FutureOr<long>
-
@detail api
@brief 给房间内的所有其他用户群发二进制消息。
@param buffer 发送的二进制消息内容,消息不超过 64KB。
@note
- 在房间内广播二进制消息前,必须先调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 加入房间。
- 调用后,会收到 onRoomMessageSendResult{@link #IRTSRoomEventHandler#onRoomMessageSendResult} 回调;
- 同一房间内的其他用户会收到 onRoomBinaryMessageReceived{@link #IRTSRoomEventHandler#onRoomBinaryMessageReceived} 回调。
-
sendRoomMessage(String messageStr)
→ FutureOr<long>
-
@detail api
@brief 给房间内的所有其他用户群发文本消息。
@param messageStr 发送的文本消息内容,消息不超过 64 KB。
@note
- 在房间内广播文本消息前,必须先调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 加入房间。
- 调用后,会收到 onRoomMessageSendResult{@link #IRTSRoomEventHandler#onRoomMessageSendResult} 回调;
- 同一房间内的其他用户会收到 onRoomMessageReceived{@link #IRTSRoomEventHandler#onRoomMessageReceived} 回调。
-
sendUserBinaryMessage(String userId, ArrayBuffer buffer, MessageConfig config)
→ FutureOr<long>
-
@detail api
@brief 给房间内指定的用户发送点对点二进制消息(P2P)。
@param userId 消息接收用户的 ID
@param buffer 发送的二进制消息内容。消息不超过 64KB。
@param config 消息发送的可靠/有序类型,参看 MessageConfig{@link #MessageConfig}。
@note
- 在发送房间内二进制消息前,必须先调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 加入房间。
- 调用后,会收到 onUserMessageSendResult{@link #IRTSRoomEventHandler#onUserMessageSendResult} 回调,通知消息发送成功或失败;
- 若消息发送成功,则 userId 所指定的用户会收到 onUserBinaryMessageReceived{@link #IRTSRoomEventHandler#onUserBinaryMessageReceived} 回调。
-
sendUserMessage(String userId, String messageStr, MessageConfig config)
→ FutureOr<long>
-
@detail api
@brief 给房间内指定的用户发送点对点文本消息(P2P)。
@param userId 消息接收用户的 ID
@param messageStr 发送的文本消息内容。消息不超过 64 KB。
@param config 消息发送的可靠/有序类型,参看 MessageConfig{@link #MessageConfig}
@return
- >0:发送成功,返回这次发送消息的编号,从 1 开始递增
- -1:发送失败,RTCRoom 实例未创建
- -2:发送失败,uid 为空
@note
- 在发送房间内文本消息前,必须先调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 加入房间。
- 调用后,会收到 onUserMessageSendResult{@link #IRTSRoomEventHandler#onUserMessageSendResult} 回调,通知消息发送成功或失败;
- 若消息发送成功,则 userId 所指定的用户会收到 onUserMessageReceived{@link #IRTSRoomEventHandler#onUserMessageReceived} 回调。
-
setRTSRoomEventHandler(IRTSRoomEventHandler rtcRoomEventHandler)
→ FutureOr<int>
-
@detail api
@brief 通过设置 RTSRoom{@link #RTSRoom} 对象的事件句柄,监听此对象对应的回调事件。
@param rtcRoomEventHandler 参看 IRTSRoomEventHandler{@link #IRTSRoomEventHandler}
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ReturnStatus{@link #ReturnStatus} 获得更多错误说明
-
toString()
→ String
-
A string representation of this object.
inherited
-
updateResource(NativeResource resource)
→ void
-
inherited
-
updateToken(String token)
→ FutureOr<int>
-
@detail api
@brief 更新房间的 Token。
收到 onTokenWillExpire{@link #IRTCRoomEventHandler#onTokenWillExpire},onPublishPrivilegeTokenWillExpire{@link #IRTCRoomEventHandler#onPublishPrivilegeTokenWillExpire}, 或 onSubscribePrivilegeTokenWillExpire{@link #IRTCRoomEventHandler#onSubscribePrivilegeTokenWillExpire} 时,你必须重新获取 Token,并调用此方法更新 Token,以保证通话的正常进行。
@param token 重新获取的有效 Token。
如果 Token 无效,你会收到 onRoomStateChanged{@link #IRTSRoomEventHandler#onRoomStateChanged},错误码是 -1010。
@return 方法调用结果:
- 0:成功;
- <0:失败。具体失败原因参看 ReturnStatus{@link #ReturnStatus}。
@note
- 请勿同时调用 updateToken{@link #RTSRoom#updateToken} 和 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 方法更新 Token。若因 Token 过期或无效导致加入房间失败或已被移出房间,你应该在获取新的有效 Token 后调用 joinRTSRoom{@link #RTSRoom#joinRTSRoom} 重新加入房间。