LarkSR 事件系统
在 LarkSR 整个生命周期内会抛出多种事件通知。使用方法类似:
var larksr;
// create code
...
// 监听连接成功事件
larksr.on('connect', function(e) {
console.log("LarkSRClientEvent CONNECT", e);
});
或者使用导出枚举值
larksr.on(LarkSRClientEvent.TASK_CREATE_SUCCESS, (e) => {
console.log("LarkSRClientEvent TASK_CREATE_SUCCESS", e);
});
其中 LarkEvent = 'larkevent'
, ERROR = 'error'
, INFO = 'info'
这三个事件中附加 code 字段,code 字段附加事件码:event_codes
event_codes 中的事件 code 值,在 LarkEvent 事件中都会抛出。
完整事件定义
/**
* LarkSR 实例完整事件定义
*/
declare const enum LarkSRClientEvent {
/**
* TASK 创建成功,返回 Task 相关信息
*/
TASK_CREATE_SUCCESS = "taskcreatesuccess",
/**
* TASK 创建失败
*/
TASK_CREATE_FAILED = "taskcreatefailed",
/**
* 渲染资源不足
* {
// 服务端返回的错误码,服务端请求正确返回时存在。需要注意渲染资源不足类型的错误码。
// 可用 type == 0 判断是否是渲染资源不足类型的错误,再用 code 进行细节处理,或者只用 type == 0 进行处理。
// 813=当前应用的运行数量已达到最大值:{0},请稍后再试
// 814=同一appKey下的应用运行数量达到最大值:{0},请稍后再试
// 815=应用运行数量已达到最大授权并发数量,请稍后再试
// 816=VR应用运行数量已达到最大授权并发数量,请稍后再试
// 817=渲染资源不足,请稍后再试
// 820=暂无活跃的GPU节点
// 821=节点资源使用率已达到设置的阈值
// 823=单节点运行应用数量已达到单节点最大授权并发数量,请稍后再试
code?: 817,
// 错误信息
message:? "",
}
*
*/
RESOURCE_NOT_ENOUGH = "resourcenotenough",
/**
* 连接渲染服务器成功 .
*/
CONNECT = "connect",
/**
* 登录成功时触发,会返回当前用户id .
*/
LOGIN_SUCCESS = "loginsuccess",
/**
* 无操作超时时触发 .
*/
NO_OPERATION_TIMEOUT = "operatetimeout",
/**
* 连接关闭.
*/
CLOSE = "close",
/**
* 云端应用关闭,但连接未关闭
*/
APP_CLOSE = "appclose",
/**
* 获取到远端视频流 .
*/
GOT_REMOTE_STREAM = "gotremotestream",
/**
* 获取到远端音频流 .
*/
GOT_REMOTE_AUDIO_STREAM = "gotremoteaudiostream",
/**
* 视频加载成功,等待播放 .
*/
MEDIA_LOADED = "meidaloaded",
/**
* 视频自动播放成功 .
*/
MEDIA_PLAY_SUCCESS = "mediaplaysuccess",
/**
* 视频自动播放失败 .
*/
MEDIA_PLAY_FAILED = "mediaplayfailed",
/**
* 自动播放声音失败,以静音模式播放 .
*/
MEDIA_PLAY_MUTE = "meidaplaymute",
/**
* 云渲染连接状态改变 .
*/
APPSTATE_CHANGE = "appstatechange",
/**
* 云端应用大小变化 .
*/
APP_RESIZE = "appresize",
/**
* 云端应用鼠标模式变化时触发 .
*/
APP_MOUSE_MODE = "appmousemode",
/**
* 云端应用鼠标状态变化 .
*/
APP_CURSOR_MODE = "appcursormode",
/**
* 玩家列表 .
*/
PLAYER_LIST = "playerlist",
/**
* 视频连接状态
*/
PEERSTATUS_REPORT = "peerstatusreport",
/**
* 云端应用请求输入文字 .
*/
APP_REQUEST_INPUT = "apprequestinput",
/**
* 云端应用请求手柄震动
*/
APP_REQUEST_GAMEPAD_OUPUT = "apprequestgamepadoutput",
/**
* 截图成功.
*/
CAPTURE_FRAME = "captureframe",
/**
* 数据通道打开 .
*/
DATACHANNEL_OPEN = "datachannelopen",
/**
* 数据通道关闭 .
*/
DATACHANNEL_CLOSE = "datachannelclose",
/**
* 数据通达收到文字消息 .
* > V3.2.314 版本对应服务器版本和数据通道版本为 3.2.5.1 及以上
*/
DATACHANNEL_TEXT = "datachanneltext",
/**
* 数据通道收到字节消息 .
*/
DATACHANNEL_BINARY = "datachannelbinary",
/**
* 更详细的事件状态,主要用于向iframe外部抛出 .
*/
LarkEvent = "larkevent",
/**
* 发生错误时抛出
* type: error
* message: 错误消息
* code: 可能的错误码如下, 错误码的具体定义 @see [./event_codes]
* // 连接服务器的websocket代理关闭
* LK_RENDER_SERVER_CLOSE : 102
* // 连接代理服务器的websocket关闭
* LK_PROXY_SERVER_CLOSE : 202
* // 检测版本失败,服务器和客户端的版本匹配。目前只有3.1和3.2大版本不匹配情况
* LK_VERSION_CHECK_FAILED : 301
* // 服务器返回创建Task失败
* TASK_NOTFOUND-TASK_NO_GPU_RESOURCE : 401-404
* // 服务端启动流媒体失败
* LK_START_STREAM_PROCESS_START-FAILED-LK_START_STREAM_ENCODER_ERROR : 501-504
* // RTC 连接关闭
* LK_RTC_EVENT_PEERCONNECTION_CLOSED : 601
* // RTC 连接出错
* LK_RTC_EVENT_PEERCONNECTION_ERROR : 602
* // RTC 创建出错,一般为 浏览器不支持 webrtc
* LK_RTC_EVENT_PEERCONNECTION_CREATE_FAILED : 603
* // 服务器主动要求客户端退出
* LK_NOTIFY_CLIENT_LOGOUT_PLAYER_LOGOUT : 800
* // 一人操作多人看房主退出
* LK_NOTIFY_CLIENT_LOGOUT_TASKOWNER_LOGOUT : 801
*
*/
ERROR = "error",
/**
* 一般信息提示
*/
INFO = "info",
/**
* 语音对话的状态
*/
AI_VOICE_STATUS = "aivoicestatus",
/**
* 语音识别转文字的结果
*/
AI_VOICE_ASR_RESULT = "aivoiceasrresult",
/**
* 对话返回的结果
*/
AI_VOICE_DM_RESULT = "aivoicedmresult",
/**
* 对话出错详细信息
*/
AI_VOICE_ERROR = "aivoiceerror",
/**
* 服务端 3.2.7.0 添加
*
*/
TOUCH_CTR_MAPPING = "touchctrmapping",
/**
* 服务端 3.2.7.0 添加
* rtmp 直播推流状态
*/
RTMP_STREAM_STATE = "rtmpstreamstate",
/**
* 服务端 3.2.7.0 添加
* rtmp 直播推流出错
*/
RTMP_STREAM_ERROR = "rtmpstreamerror"
}