事件回调

最近更新时间:2025-09-03 14:10:22

我的收藏

Events 概览

方式一:通过 init 参数传入。
TCGSDK.init({
...,
onInitSuccess: (res) => {
console.log(res);
}
})
方式二:事件监听。
TCGSDK.on('InitSuccess', (res) => {
console.log(res);
})
方法
描述
初始化成功回调,触发此回调之后才能调用后面的 API。
连接成功回调。
连接失败回调,连接断开,重连中会回调该接口。
WebRTC 状态回调。
连接断开回调,断开/被踢触发此回调。
触摸事件回调,移动端适用,移动端触摸事件回调。
页面显隐回调,页面显示/隐藏发生变化,status 包含 visible 以及 hidden。
推流分辨率变化回调。
Event
复合类事件回调。
云手机事件回调。
截图回调,连接成功后会根据 image.interval 间隔时间,截取屏幕画面,并通过 onImageEvent 回调。

初始化成功回调

初始化成功回调(InitSuccess),触发此回调之后才能调用后面的 API。

返回值

参数名称
类型
描述
code
Number
code = 0,成功。
code = -1,localOffer 无法获取H264 编码 。
code = -2,peerConnection 未断开,需要先调用 TCGSDK.destroy() 。
msg
String
-
description
String
相关描述。

示例

TCGSDK.on('InitSuccess', (res) => {
console.log(res);
// 启动
TCGSDK.access({instanceId: 'cai-xxxx-xxxx'});
});

连接成功回调

连接成功回调(ConnectSuccess)。

示例

TCGSDK.on('ConnectSuccess', (res) => {
console.log(res);
});

连接失败回调

连接失败回调(ConnectFail),连接断开,重连中会回调该接口。
通常重连时间超过两分钟(例如连接断开/移动端切后台,两分钟后触发重连),系统会自动回收实例,表现为返回 code > 0,建议该情况下重新 init + createSession。

返回值

参数名称
类型
描述
code
Number
code = -3,超出重连次数。
code = -2,自动重连中 。
code = -1,连接失败,触发了限频操作 5s,可稍后再连接。
code > 0,Proxy 返回的重连错误,通常连不上,需重新 init + createSession。
msg
String
-

示例

TCGSDK.on('ConnectFail', (res) => {
console.log(res);
});

WebRTC 状态回调

WebRTC 状态回调(WebrtcStatusChange)。

返回值

参数名称
类型
描述
code
Number
code = -2,获取 H264 编码失败。
code = -1,setRemoteDescription 失败。
code = 0,成功。
code = 1,系统繁忙。
code = 2,票据不合法。
code = 3,用户带宽不足。
code = 4,资源不足,没有可用机器。
code = 5,session 失效,需要重新登录。
code = 6,媒体描述信息错误。
code = 7,游戏拉起失败。
code = 100,Proxy 错误 。
code = 255,设备不支持 WebRTC。
msg
String
-

示例

TCGSDK.on('WebrtcStatusChange', (res) => {
console.log(res);
});

连接断开回调

连接断开回调(Disconnect),断开/被踢触发此回调,如果持续连接不上,可以看回调 onConnectFail 相关错误码,在里面完善相关逻辑。

返回值

参数名称
类型
描述
code
Number
code = -2,创建 local offer 失败,需要重新 init + createSession。
code = -1,需要重连,通常出现在码率掉0,收不到推流,连接超时,ICE 断开,SDK 会自动重连。
code = 0,主动关闭。
code = 1,用户重复连接(该消息不可靠)。
code = 2,用户心跳超时,WebRTC 服务端主动断开,这个消息有可能丢失 init + createSession。
msg
String
-

示例

TCGSDK.on('Disconnect', (res) => {
console.log(res);
});

触摸事件回调

移动端适用,移动端触摸事件回调(TouchEvent),返回 OnTouchEventResponse[],对应当前屏幕触控点数,可根据 array 长度判断多指操作。

返回值

OnTouchEventResponse
参数名称
类型
描述
id
Number
触控事件的 ID。
type
TouchType
事件类型,可选择 'touchstart','touchmove','touchend','touchcancel' 四种之一。
x
Number
触控点在视频区域内的 x 坐标。
y
Number
触控点在视频区域内的 y 坐标。
pageX
Number
触控点在当前网页内的 x 坐标。
pageY
Number
触控点在当前网页内的 y 坐标。
movementX
Number
触控点相对上次坐标的 x 偏移值。
movementY
Number
触控点相对上次坐标的 y 偏移值。

示例

TCGSDK.on('TouchEvent', (res) => {
const [{ id, type, pageX, pageY }] = res;
TCGSDK.mouseMove(id, type, pageX, pageY);
if (type === 'touchstart') {
TCGSDK.sendMouseEvent({ type: 'mouseleft', down: true });
}
if (type === 'touchend' || type === 'touchcancel') {
TCGSDK.sendMouseEvent({ type: 'mouseleft', down: false });
}
});

页面显隐回调

页面显示/隐藏发生变化(VisibilityChange),status 包含 visible 以及 hidden。

返回值

参数名称
类型
描述
status
String
'visible' | 'hidden'

示例

TCGSDK.on('VisibilityChange', ({status) => {
console.log(status);
});

推流分辨率变化回调

推流分辨率变化回调(VideoStreamConfigChange)。

返回值

参数名称
类型
width
Number
height
Number

示例

TCGSDK.on('Disconnect', ({width, height}) => {
console.log(width, height);
});

复合类事件回调

复合类事件回调(Event)。

返回值

参数名称
类型
描述
type
String
事件名称
autoplay:自动播放
video_state :视频状态
idle:idle 次数
noflow
noflowcenter
openurl:云端回传的 URL
pointerlockerror:锁定鼠标失败
readclipboarderror:获取剪切板失败
webrtc_stats
latency
data
String
不同 type可能 data 不同,参考下表。
type 对应 data 如下表:
type
data
autoplay
Object<{code: number; message: string;}>
code:
0:success
-1:failed
video_state
Object<{code: number; message: string;}>
code :
0:playing
1:pause
2:ended
idle
Object<{times: number;}>
noflow
-
noflowcenter
-
openurl
Object<{value: string;}>
pointerlockerror
-
readclipboarderror
Object<{message?: string;}>
webrtc_stats
Object<{
bit_rate: number; // 客户端接收的码率,单位:Mbps
cpu: number; // 云端 CPU 占用率,单位:百分比
gpu: string; // 云端 GPU 占用率,单位:百分比
delay: number; // 客户端收到图像帧到解码显示的延时,单位:ms,iOS 可能收不到
fps: number; // 客户端显示帧率
load_cost_time: number; // 云端加载时长,单位:ms
nack: number; // 客户端重传次数
packet_lost: number; // 客户端丢包次数
packet_received: number; // 客户端收到的包总数
rtt: number; // 客户端到云端,网络端数据包往返耗时
timestamp: number; // 此数据回调的时间戳,单位:ms
}>
latency
Object<{value: number; message: string;}>
value:
0:NETWORK_NORMAL
1:NETWORK_CONGESTION
2:NACK_RISING
3:HIGH_DELAY
4:NETWORK_JITTER
ice_state
Object<{value: string;}>
value:
connected:已连接
disconnected:连接断开

示例

TCGSDK.on('Event', ({type, data}) => {
// 云端打开浏览器
if (type === 'openurl') {
const { value } = data;
window.open(value);
console.log('openurl', value);
}
if (type === 'autoplay') {
console.log('autoplay', data);
}
});

云手机事件回调

云手机事件回调(AndroidInstanceEvent)。

返回值

参数名称
类型
描述
type
String
事件名称
trans_message:云端回传消息
system_usage:系统用量
clipboard_event:剪切板事件
notification_event
data
String
不同 type可能 data 不同,参考下表。
type 对应 data 如下表:
type
data
trans_message
Object<{msg: string; package_name: string;}>
system_usage
Object<{cpu_usage: number; mem_usage: number; gpu_usage: number;}>
clipboard_event
Object<{text: string; writeText?: boolean}>
writeText boolean 是否已写入剪切板
notification_event
Object<{package_name: string; title: string; text: string;}>
system_status
Object<{ nav_visible: boolean; music_volume: number;}>

示例

TCGSDK.on('AndroidInstanceEvent', ({type, data}) => {
console.log('AndroidInstanceEvent', type, data);
});

截图回调

截图回调(ImageEvent)连接成功后会根据 image.interval 间隔时间,截取屏幕画面,并通过 onImageEvent 回调。

返回值

参数名称
类型
描述
type
String
事件名称 'screenshot'。
data
String
不同 type可能 data 不同,参考下表。
type 对应 data 如下表:
type
data
screenshot
Object<{instanceId: string, url: string;}>[]

示例

TCGSDK.on('ImageEvent', (res) => {
console.log(res);
});