// Generated by dts-bundle-generator v8.0.1 declare class VERTS implements IVERTS { createRTS: (appId: string) => IRTS; destroyRTS: (rts: IRTS) => void; getSdkVersion: () => string; setParameter: typeof setParameter; getParameter: typeof getParameter; events: typeof RTSEventsTypes; roomEvents: typeof RTSRoomEventsType; ErrorCode: typeof ErrorCode; } declare const Config: { VERSION: string; ICE_CONFIG_REQUEST_URLS_INTERNAL: string[]; ICE_CONFIG_REQUEST_URLS: never[]; EXPECTED_ADDR: string; LOG_SERVER_URL: string; CONFIG_REQUEST_DOMAINS: string[]; DEVICE_ID: string; }; declare const _default: VERTS; declare enum ConnectionState { /** * @brief 进行连接前准备,锁定相关资源。 */ CONNECTION_START = 0, /** * @brief 连接断开,且断开时长超过 12s,SDK 会自动重连。 */ CONNECTION_STATE_DISCONNECTED = 1, /** * @brief 首次请求建立连接,正在连接中。 */ CONNECTION_STATE_CONNECTING = 2, /** * @brief 首次连接成功。 */ CONNECTION_STATE_CONNECTED = 3, /** * @brief 涵盖了以下情况: * + 首次连接时,10 秒内未连接成功; * + 连接成功后,断连 10 秒。自动重连中。 */ CONNECTION_STATE_RECONNECTING = 4, /** * @brief 连接断开后重连成功。 */ CONNECTION_STATE_RECONNECTED = 5 } declare enum ErrorCode { /** * @brief 调用方法时,传入的参数不合法 */ INVALID_PARAMS = "INVALID_PARAMS", /** * @brief Token 无效 */ INVALID_TOKEN = "INVALID_TOKEN", /** * @brief Token 过期失效 */ TOKEN_EXPIRED = "TOKEN_EXPIRED", /** * @brief 请求分配 ICE 节点时失败 */ ICE_SERVER_WRONG = "ICE_SERVER_WRONG", /** * @brief 跟服务器建立 datachannel 连接失败 */ ESTABLISH_DATACHANNEL_FAILED = "ESTABLISH_DATACHANNEL_FAILED", /** * @brief 同名用户已经登录 */ ALREADY_LOGIN = "ALREADY_LOGIN", /** * @brief 登录失败 */ LOGIN_FAILED = "LOGIN_FAILED", /** * @brief 未登录 */ NOT_LOGIN = "NOT_LOGIN", /** * @brief 请求超时 */ TIME_OUT = "TIME_OUT", /** * @brief 信令通道没有建立 */ SIGNALING_CHANNEL_NOT_OPEN = "SIGNALING_CHANNEL_NOT_OPEN", /** * @brief 相同用户 ID 的用户加入本房间,当前用户被踢出房间 */ DUPLICATE_LOGIN = "DUPLICATE_LOGIN", /** * @brief 相同 roomId 的房间已存在 */ REPEAT_CREATE_ROOM = "REPEAT_CREATE_ROOM", /** * @brief 服务端调用 OpenAPI 将当前用户踢出房间 */ KICKED_OUT = "KICKED_OUT", /** * @brief 用户已经在房间中 */ ALREADY_JOIN_ROOM = "ALREADY_JOIN_ROOM", /** * @brief 初次进房或者由于网络状况不佳断网重连时,由于服务器错误导致进房失败。SDK 会自动重试进房。 */ JOIN_ROOM_FAILED = "JOIN_ROOM_FAILED", /** * @brief 发送超时 */ USER_MESSAGE_TIMEOUT = "USER_MESSAGE_TIMEOUT", /** * @brief 通道断开,发送失败 */ USER_MESSAGE_BROKEN = "USER_MESSAGE_BROKEN", /** * @brief 找不到接收者 */ USER_MESSAGE_NO_RECEIVER = "USER_MESSAGE_NO_RECEIVER", /** * @hidden * @deprecated since 4.50, use USER_MESSAGE_NO_RECEIVER instead, * @brief 获取级联路径失败 */ USER_MESSAGE_NO_RELAYPATH = "USER_MESSAGE_NO_RELAYPATH", /** * @hidden * @brief 暂不可用。 */ USER_MESSAGE_EXCEED_QPS = "USER_MESSAGE_EXCEED_QPS", /** * @brief 发送到信息到业务服务器无应答,可能是 Http 不通 */ USER_MESSAGE_SEND_TO_SERVER_ERROR = "USER_MESSAGE_SEND_TO_SERVER_ERROR", /** * @brief 发送到信息到业务服务器失败,业务服务器 Http 响应状态码不是 `200` */ USER_MESSAGE_SERVER_RESPONSE_ERROR = "USER_MESSAGE_SERVER_RESPONSE_ERROR", /** * @brief 消息发送方没有加入房间 */ USER_MESSAGE_NOT_JOIN = "USER_MESSAGE_NOT_JOIN", /** * @hidden * @deprecated since 4.50 * @brief 连接未完成初始化 */ USER_MESSAGE_INIT = "USER_MESSAGE_INIT", /** * @hidden * @deprecated since 4.50, use USER_MESSAGE_UNKNOWN instead. * @brief 没有可用的数据传输通道连接 */ USER_MESSAGE_NO_CONNECTION = "USER_MESSAGE_NO_CONNECTION", /** * @brief 房间外或业务服务器消息发送方没有登录 */ USER_MESSAGE_NOT_LOGIN = "USER_MESSAGE_NOT_LOGIN", /** * @brief 发送消息给业务方服务器之前没有设置参数 */ USER_MESSAGE_SERVER_PARAMS_NOTSET = "USER_MESSAGE_SERVER_PARAMS_NOTSET", /** * @brief 即时未知消息错误 */ USER_MESSAGE_UNKNOWN = "USER_MESSAGE_UNKNOWN", /** * @brief 设置服务器参数失败 */ SET_SERVER_PARAMS_FAILED = "SET_SERVER_PARAMS_FAILED" } declare enum RTSEventsTypes { onMessageReceived = "onMessageReceived", onBinaryMessageReceived = "onBinaryMessageReceived", onConnectionStateChanged = "onConnectionStateChanged", onWarning = "onWarning", onError = "onError", onServerParamsSetResult = "onServerParamsSetResult" } declare enum RTSRoomEventsType { onUserJoined = "onUserJoined", onUserLeave = "onUserLeave", onMessageReceived = "onMessageReceived", onBinaryMessageReceived = "onBinaryMessageReceived" } declare enum UserOfflineReason { /** * @brief 远端用户调用 `leaveRoom` 主动退出房间。 */ QUIT = 0, /** * @brief 远端用户因 Token 过期或网络原因等掉线。 */ DROPPED = 1, /** * @brief 远端用户调用 `setUserVisibility` 切换至不可见状态。 */ /** * @brief 服务端调用 OpenAPI 将远端用户踢出房间。 */ KICKED_BY_ADMIN = 2 } declare function getParameter(key: keyof typeof Config): string | string[]; declare function setParameter(key: keyof typeof Config, value: any): void; /** * @brief 用户在线状态 */ export declare enum USER_ONLINE_STATUS { /** * @brief 对端用户离线 * 对端用户已经调用 `logout`,或者没有调用 `login` 进行登录,无法收发消息 */ OFFLINE = 0, /** * @brief 对端用户在线 * 对端用户调用 `login` 登录,并且连接状态正常。 */ ONLINE = 1, /** * @brief 无法获取对端用户在线状态 * 发生级联错误、对端用户在线状态异常时返回 */ UNREACHABLE = 2 } /** * @list overview * @detail api */ export interface IRTS { /** * @brief 创建房间。 * 多次调用此方法以创建多个 [IRTSRoom](136656#IRTSRoom) 实例。分别调用各 IRTSRoom 实例中的 [joinRoom](136656#joinRoom) 方法,同时加入多个房间。 * @param roomId 标识通话房间的房间 ID。该字符串需符合正则表达式:`[a-zA-Z0-9_@\-\.]{1,128}`。 * 多房间模式下,调用创建房间接口后,请勿调用同样的 roomID 创建房间,否则会导致创建房间失败。 * @return 创建的 [IRTSRoom](#IRTSRoom) 房间实例 */ createRTSRoom: (roomId: string) => IRTSRoom; /** * @brief 登录即时消息服务器。 * 调用此方法登录后,可以向同 `appID` 下其他已登陆用户发送文本或二进制消息。 * @param token 动态密钥,用于对登录用户进行鉴权验证。 * 同进房相同,登录需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。 * @param userId 用户 ID。 * @return * @notes + 在调用本接口登录后,如果想要登出,需要调用 [logout](#logout)。 * + 同一个 App ID 的每个用户的用户 ID 必须是唯一的。如果两个用户的用户 ID 相同,则先登录的用户将自动登出,并收到 `RTM_DUPLICATE_LOGIN` 错误。 * @region 房间管理 */ login: (token: string | null, userId: string) => Promise; /** * @brief 登出 RTS 服务器。 * 调用本接口登出后,无法再调用消息相关的方法或收到相关回调。 */ logout: () => Promise; /** * @brief 更新用户用于登录的 Token。 * Token 有一定的有效期,当 Token 过期时,需调用此方法更新登录的 Token 信息。 * @param token 更新的动态密钥 * @notes + 如果 Token 无效导致登录失败,则调用此方法更新 Token 后,SDK 会自动重新登录,而用户不需要自己调用 [login](#login) 方法。 * + Token 过期时,如果已经成功登录,则不会受到影响。Token 过期的错误会在下一次使用过期 Token 登录时,或因本地网络状况不佳导致断网重新登录时通知给用户。 */ updateLoginToken: (token: string | null) => Promise; /** * @brief 查询本地/远端用户的登录状态。 * 在发送消息之前,你可以通过本接口了解对端用户是否登录,从而决定是否发送消息。也可以通过本接口查询自己查看自己的登录状态。 * @param userId 需要查询的用户 ID * @return 用户登录状态 * @notes + 必须调用 [login](#login) 登录后,才能调用本接口。 */ getPeerOnlineStatus: (userId: string) => Promise; /** * @brief 给指定的用户发送点对点文本消息(p2p)。 * @param uid 消息接收用户的 ID * @param message 发送的文本消息内容。消息不超过 64 KB * @return * @notes + 在发送点对点文本消息前,必须先调用 [login](#login) 完成登录。 * + 若文本消息发送成功,则 uid 所指定的用户会通过 [onMessageReceived](callbacks#onMessageReceived) 回调收到该消息。 */ sendMessage: (userId: string, message: string) => Promise; /** * @brief 给指定的用户发送点对点二进制消息(p2p)。 * @param userId 消息接收用户的 ID * @param messgae 发送的二进制消息内容,消息不超过 64 KB * @return * @notes + 在发送点对点二进制消息前,必须先调用 [login](#login) 完成登录。 * + 若二进制消息发送成功,则 uid 所指定的用户会通过 [onBinaryMessageReceived](callbacks#onBinaryMessageReceived) 回调收到该条消息。 */ sendBinaryMessage: (userId: string, messgae: ArrayBuffer) => Promise; /** * @brief 设置应用服务器参数。 * 客户端调用 [sendServerMessage](136656#sendServerMessage) 或 [sendServerBinaryMessage](136656#sendServerBinaryMessage) 发送消息给应用服务器之前,必须需要设置有效签名和应用服务器地址。 * @param signature 动态签名,应用服务器会使用该签名对请求进行鉴权验证。 * @param url 应用服务器的地址 * @return * @notes + 用户必须调用 [login](#login) 登录后,才能调用本接口。 */ setServerParams: (signature: string, url: string) => Promise; /** * @brief 客户端给应用服务器发送文本消息(P2Server)。 * @param message 发送的文本消息内容。消息不超过 64 KB。 * @return * @notes + 在向应用服务器发送文本消息前,必须先调用 [login](#login) 完成登录,随后调用 [setServerParams](#setServerParams) 设置应用服务器。 * + 若文本消息发送成功,则之前调用 [setServerParams](#setServerParams) 设置的应用服务器会收到该条消息。 */ sendServerMessage: (message: string) => Promise; /** * @brief 客户端给应用服务器发送二进制消息(P2Server)。 * @param message 发送的二进制消息内容,消息不超过 64 KB。 * @return * @notes + 在向应用服务器发送二进制消息前,必须先调用 [login](#login) 完成登录,随后调用 [setServerParams](#setServerParams) 设置应用服务器。 * + 若二进制消息发送成功,则之前调用 [setServerParams](#setServerParams) 设置的应用服务器会收到该条消息。 */ sendServerBinaryMessage: (message: ArrayBuffer) => Promise; /** * @brief 设置业务标识参数 * 可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。 * @param businessId businessId 只是一个标签,颗粒度需要用户自定义。 * @notes 需要在调用 [login](#login) 之前调用,否则该方法无效。 * @region 引擎管理 */ setBusinessId: (businessId: string) => boolean; /** * @brief 添加监听事件,并处理对应的函数。 * @param type 需要监听的事件类型,参看 [IRTSEvents](callbacks#IRTSEvents) * @param handler 事件触发时执行的函数 */ on: (type: T, handler: IRTSEvents[T]) => void; /** * @brief 取消事件监听。 * @param type 需要取消监听的事件类型,参看 [IRTSEvents](callbacks#IRTSEvents) * @param handler 事件触发时执行的函数 */ off: (type: T, handler: IRTSEvents[T]) => void; } /** * @list overview * @detail callbacks */ export interface IRTSEvents { /** * @brief 收到远端用户调用 [sendMessage](api#sendMessage) 发来的文本消息时,会收到此回调 * @param uid 消息发送者 ID * @param message 收到的文本消息内容 */ [RTSEventsTypes.onMessageReceived]: (userId: string, message: string) => void; /** * @brief 收到远端用户调用 [sendBinaryMessage](api#sendBinaryMessage) 发来的二进制消息时,会收到此回调 * @param uid 消息发送者 ID * @param message 收到的二进制消息内容 */ [RTSEventsTypes.onBinaryMessageReceived]: (userId: string, message: ArrayBuffer) => void; /** * @brief 回调 SDK 与信令服务器连接状态相关事件。当 SDK 与信令服务器的网络连接状态改变时回调该事件。 * @param state 当前 SDK 与信令服务器连接状态。 * @param reason 引起信令服务器连接状态发生改变的原因,目前未启用固定为 -1 。 * @notes 该回调在信令服务器连接状态发生改变时触发,并告知用户当前的连接状态,和引起改变的原因。 */ [RTSEventsTypes.onConnectionStateChanged]: (e: { state: ConnectionState; }) => void; /** * @brief 发生警告回调。 * @notes SDK 运行时出现了警告,通常会自动恢复,警告信息可以忽略。 */ [RTSEventsTypes.onWarning]: () => void; /** * @brief 发生错误回调。 * @notes SDK 运行时出现了错误,且通常无法自动恢复,你可能需要干预。 * @param errorCode 错误代码 */ [RTSEventsTypes.onError]: (e: { errorCode: ErrorCode; }) => void; /** * @brief 设置应用服务器参数的返回结果 * @param errorCode 设置结果: *   + 返回 200,设置成功
*   + 返回其他,设置失败 * @notes + 调用 [setServerParams](136656#setServerParams) 后,会收到此回调。 * + 当调用 [setServerParams](136656#setServerParams) 设置服务器参数后断网,会在重连成功后收到本事件。 */ [RTSEventsTypes.onServerParamsSetResult]: (error?: ErrorCode) => void; } /** * @list overview * @detail api */ export interface IRTSRoom { /** * @brief 加入房间。 * 调用 [createRTSRoom](136656#createRTSRoom) 创建房间后,可调用该方法进房,在房间内收发广播消息。 * @return * @notes + 你需在调用 [login](#login) 登陆 RTS 服务器后再加入房间。 * + 用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接,此时 SDK 将会自动重连。 */ joinRoom: () => Promise; /** * @brief 离开房间。 * 用户调用此方法离开房间,结束实时消息通信,释放所有通信相关的资源。 * @return */ leaveRoom: () => Promise; /** * @brief 给房间内的所有其他用户群发文本消息。 * @param message 发送的文本消息内容,消息不超过 64 KB。 * @return * @notes + 在房间内广播文本消息前,必须先调用 [joinRoom](#joinRoom) 加入房间。 */ sendRoomMessage: (message: string) => Promise; /** * @brief 给房间内的所有其他用户群发二进制消息。 * @param message 发送的二进制消息内容,消息不超过 64 KB。 * @notes + 在房间内广播二进制消息前,必须先调用 [joinRoom](#joinRoom) 加入房间。 */ sendRoomBinaryMessage: (message: ArrayBuffer) => Promise; /** * @brief 添加监听事件,并处理对应的函数。 * @param type 需要监听的事件类型,参看 [IRTSRoomEvents](callbacks#IRTSRoomEvents) * @param handler 事件触发时执行的函数 */ on: (type: T, handler: IRTSRoomEvents[T]) => void; /** * @brief 取消事件监听。 * @param type 需要取消监听的事件类型,参看 [IRTSRoomEvents](callbacks#IRTSRoomEvents) * @param handler 事件触发时执行的函数 */ off: (type: T, handler: IRTSRoomEvents[T]) => void; /** * @brief 退出并销毁调用 [createRTSRoom](api#createRTSRoom) 所创建的房间。 */ destroy: () => void; } /** * @list overview * @detail callbacks */ export interface IRTSRoomEvents { /** * @brief 远端用户首次进房,或断网后重新连入房间时,房间内其他用户将收到该事件。 * @param userInfo 加入房间的用户的信息 */ [RTSRoomEventsType.onUserJoined]: (userInfo: UserInfo) => void; /** * @brief 远端用户离开房间时,本地用户会收到此事件 * @param userId 离开房间的远端用户 ID。 * @param reason 用户离开房间的原因。 */ [RTSRoomEventsType.onUserLeave]: (userId: string, reason: UserOfflineReason) => void; /** * @brief 接收到房间内广播消息的回调。 * 房间内其他用户调用 [sendRoomMessage](api#sendRoomMessage) 发送广播消息时,收到此回调。 * @param userId 消息发送者 ID * @param message 收到的消息内容 */ [RTSRoomEventsType.onMessageReceived]: (userId: string, message: string) => void; /** * @brief 接收到房间内广播二进制消息的回调。 * 房间内其他用户调用 [sendRoomBinaryMessage](api#sendRoomBinaryMessage) 发送广播二进制消息时,收到此回调。 * @param userId 消息发送者 ID * @param message 收到的二进制消息内容 */ [RTSRoomEventsType.onBinaryMessageReceived]: (userId: string, message: ArrayBuffer) => void; } /** * @list overview * @detail api */ export interface IVERTS { /** * @brief 创建引擎对象。 * 如果当前进程中未创建引擎实例,那么你必须先使用此方法,以使用 RTS 提供的各种消息能力。 * 如果当前进程中已创建了引擎实例,再次调用此方法时,会创建另一个独立的引擎实例。 * @param appId 每个应用的唯一标识符,由控制台随机生成的。不同的 AppId 生成的实例完全独立,无法互通。 * @return [IRTS](api#IRTS) 实例 */ createRTS: (appId: string) => IRTS; /** * @brief 销毁由 [createRTS](api#createRTS) 所创建引擎实例,并释放所有相关资源。 * @notes + 请确保和需要销毁的 [IRTS](api#IRTS) 实例相关的业务场景全部结束后,才调用此方法。 * + 该方法在调用之后,会销毁所有和此 [IRTS](api#IRTS) 实例相关的内存,并且停止与媒体服务器的任何交互 * + 调用本方法会启动 SDK 退出逻辑。引擎线程会保留,直到退出逻辑完成。因此,不要在回调线程中直接调用此 API,也不要在回调中等待主线程的执行,并同时在主线程调用本方法。不然会造成死锁。 */ destroyRTS: (rts: IRTS) => void; /** * @brief 获取 SDK 当前的版本号。 * @return SDK 当前的版本号。 */ getSdkVersion: () => string; } /** * 用户信息 */ /** * User information */ export interface UserInfo { /** * @brief 用户 ID,长度在 128 字节以内的非空字符串。 */ userId: string; /** * @brief 用户传递的额外信息,最大长度为 200 字节。会在 [onUserJoined](104479#onuserjoined) 中回调给远端用户。 * @notes 支持以下字符集范围: * + 26 个大写字母 A ~ Z * + 26 个小写字母 a ~ z * + 10 个数字 0 ~ 9 * + 下划线 "_",at 符 "@",减 号 "-" */ extraInfo?: string; } export { _default as default, }; export as namespace RTS; export {};