Class Client
- 小程序
更新时间不可用
Client 类的构造选项。
Constructors
constructor
new Client(options: object): ClientNOTE:加解密功能仅在 IoT 场景适用。
| 参数名 | 描述 |
|---|---|
options: object |
|
| 返回类型 | 描述 |
|---|---|
Methods
destroy
destroy(onSuccess?: function, onFailure?: function): Promise<void>销毁客户端对象。
| 参数名 | 描述 |
|---|---|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
init
init(appId: string, onSuccess?: function, onFailure?: function): Promise<void>初始化客户端对象。
| 参数名 | 描述 |
|---|---|
appId: string | 你的小程序项目的 App ID。 |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
join
join(channelKey: string, channel: string, uid: number | string, isAudioOnly: boolean, UidType?: UidType, onSuccess?: function, onFailure?: function): Promise<void>加入频道。
| 参数名 | 描述 |
|---|---|
channelKey: string | 在 app 服务器端生成的用于鉴权的 Token:
|
channel: string | 频道名,能标识直播频道的字符串。 |
uid: number | string | 指定用户的 ID。
|
isAudioOnly: boolean | 是否为纯音频场景:
|
用户 ID 类型, 可选字段, 默认值为 INT 值 0。详见 UidType。 | |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。返回值为用户 ID。 参数
|
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
leave
leave(onSuccess?: function, onFailure?: function): Promise<void>退出频道。
| 参数名 | 描述 |
|---|---|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
mute
mute(uid: number, target: string, onSuccess?: function, onFailure?: function): Promise<void>停止接收远端用户的音视频流。
| 参数名 | 描述 |
|---|---|
uid: number | 远端用户的 ID。 |
target: string | 选择停止接收哪一种流,有三种选择:
|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
muteLocal
muteLocal(target: string, onSuccess?: function, onFailure?: function): Promise<void>停止发送本地用户的音视频流。
| 参数名 | 描述 |
|---|---|
target: string | 选择停止发送哪一种流,有三种选择:
|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
off
off(event: string): void取消监听流事件。
| 参数名 | 描述 |
|---|---|
event: string | 想要取消监听的流事件。 |
| 返回类型 | 描述 |
|---|---|
void |
on
publish
publish(onSuccess?: function, onFailure?: function): Promise<string>发布本地音视频流。
该方法将本地音视频流发布到 SD-RTN。互动直播中,调用该 API 的用户即默认为主播。
| 参数名 | 描述 |
|---|---|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。返回值为音视频流的推流地址。 参数
|
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<string> | string 型,音视频流的推流地址。 |
rejoin
rejoin(channelKey: string, channel: string, uid: number | string, uids: number, isAudioOnly: boolean, UidType?: UidType, onSuccess?: function, onFailure?: function): Promise<void>重新加入频道。
该方法让用户重新加入声网 RTC 频道。如果你的小程序中有切后台的场景需求,请确保使用该方法做好重连机制。
| 参数名 | 描述 |
|---|---|
channelKey: string | 在 app 服务器端生成的用于鉴权的 Token:
|
channel: string | 频道名,能标识直播频道的字符串。 |
uid: number | string | 指定用户的 ID。
|
uids: number | 频道内已有用户的用户 ID 列表。 |
isAudioOnly: boolean | 是否为纯音频场景:
|
用户 ID 类型, 可选字段, 默认值为 INT 值 0。详见 UidType。 | |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。返回值为用户 ID。 参数
|
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
renewToken
renewToken(token: string, onSuccess?: function, onFailure?: function): Promise<void>更新 Token。
since
v2.5.3
该方法更新 Token。如果启用了 Token 机制,过一段时间后密钥会失效。
当收到 client.on("token-privilege-will-expire") 消息时,调用该 API 以更新 Token,否则 SDK 会无法和服务器建立连接。
| 参数名 | 描述 |
|---|---|
token: string | 新的 Token。 |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
setAudioCodec
setAudioCodec(audioCodec: AudioCodec): void设置 IoT 设备使用的音频编码格式。
since
v2.5.6
| 参数名 | 描述 |
|---|---|
audioCodec: AudioCodec | IoT 设备使用的音频编码格式,详见AudioCodec。
|
| 返回类型 | 描述 |
|---|---|
void |
setRemoteVideoStreamType
setRemoteVideoStreamType(uid: number, streamType: 0 | 1, onSuccess?: function, onFailure?: function): Promise<void>设置订阅的视频流类型。
since
v2.5.3
如果发送端选择发送视频双流 (大流和小流),该方法可以在订阅端选择接收大流还是小流。如果不设置,订阅端默认接收大流。
| 参数名 | 描述 |
|---|---|
uid: number | 用户 ID。 |
streamType: 0 | 1 | |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。 参数
|
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
setRole
setRole(role: string, onSuccess?: function, onFailure?: function): Promise<void>设置用户角色。
注:如果在主播已 publish 的状态下调用该方法将用户角色设置为 audience,会导致之前的推流地址无效。
| 参数名 | 描述 |
|---|---|
role: string | |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
startChannelMediaRelay
startChannelMediaRelay(config: ChannelMediaRelayConfiguration, callback: function): void开始跨频道媒体流转发。
该方法可用于实现跨频道媒体流转发。
调用该方法后,SDK 会触发以下回调:
-
Client.on("channel-media-relay-state"),报告当前的跨频道媒体流转发状态和错误码。- 如果转发成功,该回调中
state为 2,code为 0。 - 如果转发出现异常,该回调中
state为 3,code为错误码。你可以尝试再次调用本方法。
- 如果转发成功,该回调中
-
Client.on("channel-media-relay-event"),报告跨频道媒体流转发相关的事件。- 如果转发成功,该回调中
code为 4,表示 SDK 开始向目标频道发送数据包。
- 如果转发成功,该回调中
Note
- 跨频道媒体流转发功能需要提交工单联系技术支持开通。
- 该功能不支持 String 型 UID。
- 请在成功加入频道后调用该方法。
- 直播场景下,只有主播可以调用该方法。
- 成功调用该方法后,若你想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
example
示例代码
client.startChannelMediaRelay(channelMediaConfig, function(e) {
if(e) {
utils.notification(`startChannelMediaRelay failed: ${JSON.stringify(e)}`);
} else {
utils.notification(`startChannelMediaRelay success`);
}
});| 参数名 | 描述 |
|---|---|
config: ChannelMediaRelayConfiguration | 跨频道媒体流转发参数配置,详见 ChannelMediaRelayConfiguration。 |
callback: function | 媒体流转发是否成功的回调。
参数
|
| 返回类型 | 描述 |
|---|---|
void |
stopChannelMediaRelay
stopChannelMediaRelay(callback: function): void停止跨频道媒体流转发。
一旦停止转发,用户会退出所有的目标频道。
调用该方法会触发 Client.on("channel-media-relay-state") 回调。
- 如果成功停止跨频道媒体流转发,该回调中
state为 0。 - 如果未成功停止跨频道媒体流转发,该回调中
state为 3,code错误码可能为 2 或 8,一般是在网络较差的情况下,退出的消息发送不成功导致的。你可以调用 Client.leave 离开频道来停止跨频道媒体流转发。
example
示例代码
stopChannelMediaRelay: function() {
client.stopChannelMediaRelay(function(e) {
if(e) {
utils.notification(`stopChannelMediaRelay failed: ${JSON.stringify(e)}`);
} else {
utils.notification(`stopChannelMediaRelay success`);
}
});
}| 参数名 | 描述 |
|---|---|
callback: function | 停止跨频道媒体流转发是否成功的回调。
参数
|
| 返回类型 | 描述 |
|---|---|
void |
subscribe
subscribe(uid: number, options?: object, onSuccess?: function, onFailure?: function): Promise<object>订阅远端音视频流。
该方法从 SD-RTN 订阅并接收远端音视频流。
| 参数名 | 描述 |
|---|---|
uid: number | 要订阅的远端用户 ID。 |
Optional options?: object | 设置是否订阅视频或音频。
|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。返回值为音视频的拉流地址。 参数
|
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<object> | 一个对象,包含以下数据:
|
unmute
unmute(uid: number, target: string, onSuccess?: function, onFailure?: function): Promise<void>恢复接收远端用户的音视频流。
| 参数名 | 描述 |
|---|---|
uid: number | 远端用户的 ID。 |
target: string | 选择停止接收哪一种流,有三种选择:
|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
unmuteLocal
unmuteLocal(target: string, onSuccess?: function, onFailure?: function): Promise<void>恢复发送本地用户的音视频流。
| 参数名 | 描述 |
|---|---|
target: string | 选择恢复发送哪一种流,有三种选择:
|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
unpublish
unpublish(onSuccess?: function, onFailure?: function): Promise<void>停止发布本地音视频流。
| 参数名 | 描述 |
|---|---|
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用失败时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
unsubscribe
unsubscribe(uid: number, onSuccess?: function, onFailure?: function): Promise<void>停止订阅远端音视频流。
该方法停止从 SD-RTN 订阅并接收远端音视频流。
| 参数名 | 描述 |
|---|---|
uid: number | 要停止订阅的远端用户 ID。 |
Optional onSuccess?: function | 方法调用成功时执行的回调函数。无返回值。 |
Optional onFailure?: function | 方法调用成功时执行的回调函数。返回值为错误码和错误信息。 参数
|
| 返回类型 | 描述 |
|---|---|
Promise<void> |
updateChannelMediaRelay
updateChannelMediaRelay(config: ChannelMediaRelayConfiguration, callback: function): void更新媒体流转发的目标频道。
成功开始跨频道转发媒体流后,如果你希望添加或删除媒体流转发的目标频道,可以调用该方法。
调用该方法后,SDK 会触发 Client.on("channel-media-relay-event") 回调。
- 如果更新成功,回调中
code为 7。 - 如果更新失败,回调中
code为 8,同时还会触发Client.on("channel-media-relay-state")回调,其中state为 3。出错后跨频道媒体流转发状态会被重置,你需要调用 startChannelMediaRelay 重新开始跨频道媒体流转发。
Note
- 请在 startChannelMediaRelay 后调用该方法,更新媒体流转发的频道。
- 跨频道媒体流转发最多支持 4 个目标频道。
example
示例代码
client.updateChannelMediaRelay(channelMediaConfig, function(e) {
if(e) {
utils.notification(`updateChannelMediaRelay failed: ${JSON.stringify(e)}`);
} else {
utils.notification(`updateChannelMediaRelay success`);
}
});| 参数名 | 描述 |
|---|---|
config: ChannelMediaRelayConfiguration | 跨频道媒体流转发参数配置,详见 ChannelMediaRelayConfiguration。 |
callback: function | 更新目标频道是否成功的回调。
参数
|
| 返回类型 | 描述 |
|---|---|
void |
updatePlayerNetStatus
updatePlayerNetStatus(uid: number, event: any): void上报拉流过程中的网络状态。
since
v2.5.3
当收到 live-player 组件报告的网络状态通知时,你可以调用该接口将其上报给声网的数据中心。
| 参数名 | 描述 |
|---|---|
uid: number | 远端用户的用户 ID。 |
event: any | 微信组件的完整事件回调对象。请直接传入回调参数 |
<live-player bindnetstatus="onPlayerNetStatus" />
client.updatePlayerNetStatus(uid, e)| 返回类型 | 描述 |
|---|---|
void |
updatePlayerStateChange
updatePlayerStateChange(uid: number, event: any): void上报拉流状态。
since
v2.5.3
当收到 live-player 组件报告的拉流状态变化通知时,你可以调用该接口将其上报给声网的数据中心。
| 参数名 | 描述 |
|---|---|
uid: number | 远端用户的用户 ID。 |
event: any | 微信组件的完整事件回调对象。请直接传入回调参数 |
<live-player bindstatechange="onPlayerStateChange" />
client.updatePlayerStateChange(uid, e)| 返回类型 | 描述 |
|---|---|
void |
updatePusherNetStatus
updatePusherNetStatus(event: any): void上报推流过程中的网络状态。
since
v2.5.3
当收到 live-pusher 组件报告的网络状态通知时,你可以调用该接口将其上报给声网的数据中心。
| 参数名 | 描述 |
|---|---|
event: any | 微信组件的完整事件回调对象。请直接传入回调参数 |
<live-pusher bindnetstatus="onPusherNetStatus" />
client.updatePusherNetStatus(e)| 返回类型 | 描述 |
|---|---|
void |
updatePusherStateChange
updatePusherStateChange(event: any): void上报推流状态。
since
v2.5.3
当收到 live-pusher 组件报告的推流状态变化通知时,你可以调用该接口将其上报给声网的数据中心。
| 参数名 | 描述 |
|---|---|
event: any | 微信组件的完整事件回调对象。请直接传入回调参数 |
<live-pusher bindstatechange="onPusherStateChange" />
client.updatePusherStateChange(e)| 返回类型 | 描述 |
|---|---|
void |