跳转至

TKRoomSDK事件说明

TKRoomSDK 事件说明

挂载监听

  • room事件监听器需要挂载在room实例上,您可自定义事件派发器作事件转发
    1
    2
    3
    4
    5
    6
    7
    8
    const room = TK.Room()
    const dispatcher = TK.EventDispatcher()
    function registerRoomEvent() {
        room.addEventListener(event, (recvEventData) => {
            dispatcher.dispatchEvent(recvEventData, false)
        })
    }
    registerRoomEvent()
    

加入房间成功(TK.EVENT_TYPE.roomConnected)

  • 该事件派发于当前用户成功进入房间时,可根据此事件判断用户连接状态

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomConnected
message Array 房间当前存在的信令(pubMsg发布的保存消息)
isReconnect Boolean 是否为重连加入房间
  • 代码示例
1
2
3
4
5
6
const onRoomConnectSuccess = data => {
    console.log("room event type: ", data.type);
    console.log("connect success data: ", data.message);
    alert("加入房间成功")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomConnected, onRoomConnectSuccess)

加入房间失败(TK.EVENT_TYPE.roomConnectFail)

  • 该事件派发于当前用户进入房间失败时,可根据此事件判断用户连接状态

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomConnectFail
message Object source:加入房间操作进行到哪一步, error:错误原因,状态码可能值请见全局错误码
  • 代码示例
1
2
3
4
5
6
7
const onRoomConnectFailed = data => {
    console.log("room event type: ", data.type);
    console.log("connect fail source: ", data.message.source);
    console.log("connect fail error: ", data.message.error);
    alert("加入房间失败")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomConnectFail , onRoomConnectFailed)

房间连接中断(TK.EVENT_TYPE.roomDisconnected)

  • 该事件派发于当前房间连接中断时,可能原因有断网,线路抖动,弱网环境 等,可监听此事件给与相应提示
  • 房间连接中断,sdk内部会自动尝试重连

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomDisconnected
  • 代码示例
1
2
3
4
5
const onRoomDisconnect = data => {
    console.log("room event type: ", data.type);
    alert("网络抖动,正在重连...")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomDisconnected , onRoomDisconnect)

离开房间(TK.EVENT_TYPE.roomLeaveRoom)

  • 该事件派发于当前用户离开房间成功时,此时用户连接已断开,可监听此事件进行一些清理工作

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomLeaveRoom
  • 代码示例
1
2
3
4
5
const onRoomLeaveRoom = data => {
    console.log("room event type: ", data.type);
    alert("当前用户已退出教室")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomLeaveRoom , onRoomLeaveRoom)

用户加入房间(TK.EVENT_TYPE.roomParticipantJoin)

  • 该事件派发于其他用户加入房间成功时(大规模房间下规则有差异),可监听此事件做用户加入的通知等

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomParticipantJoin
user Object 加入房间的用户信息
  • 代码示例
1
2
3
4
5
6
const onRoomUserJoin = data => {
    console.log("room event type: ", data.type);
    console.log("user join info: ", data.user)
    alert(data.user.nickname + "已加入房间")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantJoin , onRoomUserJoin)

用户离开房间(TK.EVENT_TYPE.roomParticipantLeave)

  • 该事件派发于其他用户离开房间成功时(大规模房间下规则有差异),可监听此事件做用户离开的通知等

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomParticipantLeave
user Object 离开房间的用户信息
  • 代码示例
1
2
3
4
5
6
const onRoomUserLeave = data => {
    console.log("room event type: ", data.type);
    console.log("user leave info: ", data.user)
    alert(data.user.nickname + "已离开房间")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantLeave , onRoomUserLeave)

用户被请出房间(TK.EVENT_TYPE.roomParticipantEvicted)

  • 该事件派发于用户被请出房间时,只有被请出房间的用户能收到此事件,可监听此事件做相关的提示
  • 某些情况下服务器会主动将某人请出房间,以下为服务器踢人时的message.reasoncode码说明

    • 400, 相同ID用户重复进入房间。先进入房间的用户会被踢出
    • 401, 房间到达设定的结束时间或老师离开房间后在指定时间内未返回
    • 402, 房间被禁用(通过后台或WebAPI)
  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomParticipantEvicted
user Object 被请出用户的信息
message Object 被请出的原因及相关信息
  • 代码示例
1
2
3
4
5
6
7
const onRoomUseEvicted = data => {
    console.log("room event type: ", data.type);
    console.log("user evict reason: ", data.message)
    console.log("reason code: ", data.message.reason)
    alert( "您已被请出房间")
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantEvicted , onRoomUseEvicted)

收到聊天消息(TK.EVENT_TYPE.roomTextMessage)

  • 该事件派发于收到房间聊天消息时,用户可监听此事件做聊天消息的展示

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomTextMessage
user Object 聊天消息发送者信息
message Object 聊天消息内容
userid String 聊天消息发送者的id
nickname String 聊天消息发送者的昵称
role Number 聊天消息发送者的角色,具体取值见房间角色
  • 代码示例
1
2
3
4
5
const onRoomTextMessage = data => {
    console.log("room event type: ", data.type);
    console.log("room message info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomTextMessage , onRoomTextMessage)

自定义消息发布(TK.EVENT_TYPE.roomPubmsg)

  • 该事件派发于收到房间自定义发布消息时,用户可以监听此消息做各种自定义房间业务开始的响应等

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomPubmsg
message Object 自定义发布消息内容
  • 代码示例
1
2
3
4
5
6
7
8
const onRoomPubmsg = data => {
    console.log("room event type: ", data.type);
    console.log("room message info: ", data.message)
    if (data.message.name === "testStart") {
        consoel.log("考试开始了")
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomPubmsg , onRoomPubmsg)

自定义消息删除(TK.EVENT_TYPE.roomDelmsg )

  • 该事件派发于收到房间自定义删除消息时,用户可以监听此消息做各种自定义房间业务结束的响应等
  • 房间内必须先有自定义消息的发布,后续才能收到对应自定义消息的删除

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomDelmsg
message Object 自定义删除消息内容
  • 代码示例
1
2
3
4
5
6
7
8
const onRoomDelmsg = data => {
    console.log("room event type: ", data.type);
    console.log("room message info: ", data.message)
    if (data.message.name === "testStart") {
        consoel.log("考试结束了")
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomDelmsg , onRoomDelmsg)

用户属性改变(TK.EVENT_TYPE.roomUserPropertyChanged)

  • 该事件派发于用户属性发生变化时,符合消息接受者角色(见消息发送角色)的用户均会收到此消息。可监听此消息做用户属性变化相关的房间业务
  • 在大房间模式下,如果changeUserPropertytoIdTK.MSG_TO_ALLUSER 或者TK.MSG_TO_ALLEXCEPTSENDER,那么没有上台的用户的用户属性改变只转发给调用者(即调用changeUserProperty者)、被操作者(即被改变属性的用户),如果是上台的用户(即发布音频/视频的用户)的用户属性被改变则根据toId转发给指定用户。

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserPropertyChanged
user Object 被修改用户属性的用户信息
message Object 修改的用户属性
userId String 被修改属性的用户id
fromID String 发起修改属性的用户id
  • 代码示例
1
2
3
4
5
6
7
8
const onRoomUserPropertyChanged = data => {
    console.log("room event type: ", data.type);
    console.log("change property info: ", data.message)
    if (data.userId === "myId" && data.message.hasOwnProperty("level") ) {
        cosnole.log("我的用户属性被修改了,修改的用户属性是 "level", 我的新level 是: " + data.message.level)
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserPropertyChanged , onRoomUserPropertyChanged)

用户视频发布状态改变(TK.EVENT_TYPE.roomUserVideoStateChanged)

  • 该事件派发于用户视频发布状态变化时,可监听该事件做用户视频的播放或关闭

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserVideoStateChanged
message Object 视频发布状态信息,详细信息如下
  • message
参数名称 类型 说明
userId String 视频发布状态变化的用户id
published Boolean 发布或停止发布
deviceId String 注:只有多视频模式下发布的视频才有deviceId
  • 代码示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const onRoomUserVideoStateChanged = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    if (data.message.published) {
        room.playVideo(data.message.userId, "video-dom")
    } else {
        room.unplayVideo (data.message.userId)
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserVideoStateChanged , onRoomUserVideoStateChanged)

用户音频发布状态改变(TK.EVENT_TYPE.roomUserAudioStateChanged)

  • 该事件派发于用户音频状态变化时,可监听该事件做用户音频的播放或关闭

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserAudioStateChanged
message Object 视频发布状态信息,详细信息如下
  • message
参数名称 类型 说明
userId String 音频发布状态变化的用户id
published Boolean 发布或停止发布
  • 代码示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const onRoomUserAudioStateChanged = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    if (data.message.published) {
        room.playAudio(data.message.userId)
    } else {
        room.unplayAudio(data.message.userId)
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserAudioStateChanged , onRoomUserAudioStateChanged)

用户共享媒体文件状态改变(TK.EVENT_TYPE.roomUserMediaStateChanged )

  • 该事件派发于用户共享媒体文件状态变化时,可监听该事件做共享媒体文件的播放或关闭

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserMediaStateChanged
message Object 共享媒体文件发布状态信息,详细信息如下
  • message
参数名称 类型 说明
userId String 共享媒体文件的用户id
type String 媒体文件类型 mediafile
published Boolean 发布或停止发布
attributes Object 媒体文件属性。包括媒体文件宽高、时长、文件名、是否暂停、是否包含音视频等
  • 代码示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const onRoomUserMediaStateChanged = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    if (data.message.published && data.message.type === "mdeia") {
        room.playRemoteMedia(data.message.userId, "media-dom")
    } 
    if (!data.message.published && data.message.type === "mdeia") {
        room.unplayRemoteMedia(data.message.userId)
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserMediaStateChanged , onRoomUserMediaStateChanged)

用户共享屏幕状态改变(TK.EVENT_TYPE.roomUserScreenStateChanged)

  • 该事件派发于用户共享屏幕状态变化时,可监听该事件做共享屏幕的播放或关闭

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserScreenStateChanged
message Object 共享屏幕发布状态信息,详细信息如下
  • message
参数名称 类型 说明
userId String 共享屏幕的用户id
type String 共享屏幕类型screen
published Boolean 发布或停止发布
attributes Object 屏幕共享流属性。包括视频流宽高,是否包含音频,是否包含视频等
  • 代码示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const onRoomUserScreenStateChanged = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    if (data.message.published && data.message.type === "screen") {
        room.playRemoteScreen(data.message.userId, "screen-dom")
    } 
    if (!data.message.published && data.message.type === "screen") {
        room.unplayRemoteScreen(data.message.userId)
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserScreenStateChanged , onRoomUserScreenStateChanged)

用户共享媒体文件属性更新(TK.EVENT_TYPE.roomUserMediaAttributesUpdate)

  • 该事件派发于用户共享媒体文件属性变化时,可监听该事件做共享媒体文件的暂停或恢复播放提示(视频会自动暂停)

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserMediaAttributesUpdate
message Object 共享媒体文件发布属性更新信息,详细信息如下
  • message
参数名称 类型 说明
userId String 共享媒体文件的用户id
type String 媒体文件类型 mediafile
attributes Object 媒体文件属性。包括媒体文件宽高、时长、文件名、是否暂停、是否包含音视频等
updateAttributes Object 更新的媒体文件属性
  • 代码示例
1
2
3
4
5
6
7
8
const onRoomUserMediaAttributesUpdate = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    if (data.message.type === "media" && data.message.updateAttributes.pause) {
        console.log("media paused")
    }
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserMediaAttributesUpdate , onRoomUserMediaAttributesUpdate)

媒体设备成功(TK.EVENT_TYPE.deviceSuccess)

  • room对象初始化(init)之后,若有可用设备,则会触发该事件

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.deviceSuccess
message Object 可用设备的种类 { kind: "videoinput" || "audioinput" }
  • 代码示例
1
2
3
4
5
6
const onDeviceSuccess = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    console.log(data.message.kind + "is avaliable")
}
dispatcher.addEventListener(TK.EVENT_TYPE.deviceSuccess , onDeviceSuccess)

媒体设备失败(TK.EVENT_TYPE.deviceFailure)

  • room对象初始化(init)之后,若音频、视频因各种原因导致无法正常使用,则会触发该事件

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.deviceFailure
message Object 不可用设备的信息 { kind, deviceId }
code Number 设备失败错误码,取值范围见sdk错误码
  • 代码示例
1
2
3
4
5
6
const onDeviceFailure = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    console.log(data.message.kind + "is not avaliable, reason is: " + data.code)
}
dispatcher.addEventListener(TK.EVENT_TYPE.deviceFailure , onDeviceFailure)

媒体设备变更(TK.EVENT_TYPE.deviceChange)

  • room对象初始化(init)之后,若新增、移除音频,视频设备,则会触发该事件

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.deviceChange
message Object 变更设备信息 { type, devices }
  • 代码示例
1
2
3
4
5
6
7
const onDeviceChange = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    console.log("device change type: ", data.message.type) //  data.message.type:  TK.DEVICE_STATE.DEVICE_ADD(设备新增) | TK.DEVICE_STATE.DEVICE_REMOVE(设备移除)
    console.log("device change devices: ", data.message.devices)
}
dispatcher.addEventListener(TK.EVENT_TYPE.deviceChange , onDeviceChange)

主摄像头改变(TK.EVENT_TYPE.roomUserMainCameraChanged)

  • 该事件派发于多摄模式下,主摄像头改变时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserMainCameraChanged
message Object 主摄像头改变的信息
  • message
参数名称 类型 说明
userId String 用户ID
deviceId String 新的主摄像头设备id
  • 代码示例
1
2
3
4
5
6
const onRoomUserMainCameraChanged = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
    console.log( data.message.userId + "的主摄像头设备变化了,新设备id是" + data.message.deviceId)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserMainCameraChanged , onRoomUserMainCameraChanged)

视频首帧(TK.EVENT_TYPE.roomFirstVideoFrame)

  • 视频窗口创建完成,视频可播放时会派发该事件
  • 如果没有joinroom成功(即:没有收到TK.EVENT_TYPE.roomConnected事件),则userId为""

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomFirstVideoFrame
message Object 视频首帧相关信息
  • message
参数名称 类型 说明
userId String 用户ID
mediaType String 媒体类型,取值见媒体类型
width Number 视频宽度
height Number 视频高度
deviceId String 视频设备id, 注:只有多摄模式下才有该属性
  • 代码示例
1
2
3
4
5
const onRoomFirstVideoFrame = data => {
    console.log("room event type: ", data.type);
    console.log("data info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomFirstVideoFrame , onRoomFirstVideoFrame)

音频首帧(TK.EVENT_TYPE.roomFirstAudioFrame)

  • 音频播放器创建完成,音频可播放时会派发该事件
  • 如果没有joinroom成功(即:没有收到TK.EVENT_TYPE.roomConnected事件),则userId为""

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomFirstAudioFrame
message Object 音频首帧相关信息
  • message
参数名称 类型 说明
userId String 用户ID
mediaType String 媒体类型,取值见媒体类型

文件列表(TK.EVENT_TYPE.roomFiles)

  • 该事件派发于房间内文件信息获取完毕时,可监听此事件获取房间当前可用文件

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomFiles
message Array 房间文件信息数组, 文件对象结构说明如下
  • fileInfo
参数名称 类型 说明
fileid Number 文件id
companyid String 企业id
filename String 文件名字
uploaduserid String 上传者id
uploadusername String 上传者用户名称
downloadpath String 文件下载路径
swfpath String 文件的查看路径
filetype String 文件类型
pagenum Number 总页数,该字段只对普通的静态文件有效,对于动态PPT和H5文件无效
filecategory Number 文件种类, 0:房间 , 1:系统
fileprop Number 文件分类, 0:普通文档 , 1-2:动态ppt(1-旧版,2-新版) , 3:h5文档
type Number 是否是默认文档, 0:非默认文档 1:默认文档
  • 代码示例
1
2
3
4
5
const onRoomFiles = data => {
    console.log("room event type: ", data.type);
    console.log("room file info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomFiles , onRoomFiles)

添加文件(TK.EVENT_TYPE.roomAddFile)

  • 该事件派发于房间内添加新文件成功时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomAddFile
message Object 关于添加的文件的描述
  • message
参数名称 类型 说明
fileid Number 添加的文件id
fromID String 上传者的用户id
  • 代码示例
1
2
3
4
5
const onRoomAddFile = data => {
    console.log("room event type: ", data.type);
    console.log("room new file info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomAddFile , onRoomAddFile)

删除文件(TK.EVENT_TYPE.roomDeleteFile)

  • 该事件派发于房间内文件被删除时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomDeleteFile
message Object 关于删除的文件的描述
  • message
参数名称 类型 说明
fileid Number 删除的文件id
fromID String 删除者的用户id
fileinfo Object 删除的文件信息
  • 代码示例
1
2
3
4
5
const onRoomDeleteFile = data => {
    console.log("room event type: ", data.type);
    console.log("room delete file info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomDeleteFile , onRoomDeleteFile)

更新文件(TK.EVENT_TYPE.roomUpdateFile)

  • 该事件派发于房间内文件信息被更新时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUpdateFile
message Object 关于更新的文件的描述
  • message
参数名称 类型 说明
fileid Number 更新的文件id
fromID String 更新者的用户id
fileinfo Object 更新的文件信息
  • 代码示例
1
2
3
4
5
const onRoomUpdateFile = data => {
    console.log("room event type: ", data.type);
    console.log("room update file info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUpdateFile , onRoomUpdateFile)

房间模式改变(TK.EVENT_TYPE.roomModeChanged)

  • 该事件派发于房间模式发生变化时,如教室内人数过多从普通房间切换至大房间模式
  • 如果是大房间(即大规模房间)模式,也就是roomModeTK.ROOM_MODE.BIG_ROOM时,某些接口或者事件将发生变动,详情见大房间(大规模房间)模式说明

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomModeChanged
message Object 新房间模式 { roomMode: roomMode }, 取值见房间模式
  • 代码示例
1
2
3
4
5
const onRoomModeChanged = data => {
    console.log("room event type: ", data.type);
    console.log("room mode changed info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomModeChanged , onRoomModeChanged)

服务器地址更新(TK.EVENT_TYPE.roomServerAddressUpdate )

  • 该事件派发于服务器地址更新时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomServerAddressUpdate
message Object 新的服务器地址信息
  • message
参数名称 类型 说明
web_protocol String web请求的协议
web_host String web请求的域名
web_port Number web请求的端口
doc_protocol String 文档加载的协议
doc_host String 文档加载的域名
doc_port Number 文档加载的端口
backup_doc_protocol String 备份文档加载的协议
backup_doc_host_list Array 备份文档加载的域名列表
backup_doc_port Number 备份文档加载的端口
  • 代码示例
1
2
3
4
5
const onRoomServerAddressUpdate = data => {
    console.log("room event type: ", data.type);
    console.log("room server address update info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomServerAddressUpdate , onRoomServerAddressUpdate)

用户网络状态改变(TK.EVENT_TYPE.roomUserNetworkStateChanged)

  • 该事件派发用户网络链接状态消息

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomUserNetworkStateChanged
message Object 网络状态信息
  • message
参数名称 类型 说明
userId String 用户ID
deviceId String 视频设备id, 注:只有多视频模式下发布的视频才有 deviceId
networkStatus Object 网络状态数据,详细数据格式如下
  • networkStatus

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    {
        // 视频数据统计
        video:{
            bitsPerSecond:带宽 bps ,
            packetsLost:丢包数  ,
            totalPackets:总包数 ,
            packetsLostRate:视频丢包率(%) ,
            currentDelay:延迟 ,
            frameRate:帧率 ,
            frameWidth:视频宽 ,
            frameHeight:视频高 ,
            timestamp:时间戳 ,
            netquality:网络质量可能取值请见[网络状态质量]),
        },
        // 音频数据统计
        audio:{
            bitsPerSecond:带宽 bps ,
            packetsLost:丢包数,
            totalPackets:总包数 ,
            packetsLostRate:音频丢包率(%) ,
            currentDelay:延迟  ,
            timestamp:时间戳 ,
            netquality:网络质量可能取值请见[网络状态质量]),
        }
    }
    

  • 代码示例

1
2
3
4
5
const onRoomUserNetworkStateChanged = data => {
    console.log("room event type: ", data.type);
    console.log("room user network state change info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomUserNetworkStateChanged , onRoomUserNetworkStateChanged)

用户网络状态统计(TK.EVENT_TYPE.roomRtcStatsReportEvent)

  • 该事件派发当前用户网络状态统计消息
  • 用户进入教室后事件即开始派发,频率为 1次/秒

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomRtcStatsReportEvent
message Object 网络状态信息
  • message
参数名称 类型 说明
stats Object 事件数据对象,详细如下
  • stats
参数名称 类型 说明
audioDelay Number 音频发布延迟 (ms)
videoDelay Number 视频发布延迟(ms)
inAudioDelay Number 音频订阅延迟(ms)
inVideoDelay Number 视频订阅延迟(ms)
inAudioKBitRate Number 音频订阅比特率
inVideoKBitRate Number 视频订阅比特率
inBytes Number 订阅字节数
outBytes Number 发布字节数
inPackets Number 订阅包数
outPackets Number 发布包数
downlinkDelay Number 订阅总延迟(ms)
uplinkDelay Number 发布总延迟(ms)
downlinkDelayLevel Number 下行网络等级,见网络状态质量
uplinkDelayLevel Number 上行网络等级,见网络状态质量
duration Number 总时长(ms)
  • 代码示例
1
2
3
4
const onRoomRtcStatsReportEvent = data => {
    const stats = data.message.stats
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomRtcStatsReportEvent , onRoomRtcStatsReportEvent)

服务器录制状态更新(TK.EVENT_TYPE. roomServerRecordStateChange)

  • 该事件派发于服务器录制状态更新时

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomServerRecordStateChange
message Object 当前服务器录制状态信息
  • message
参数名称 类型 说明
state String 录制状态: start, pause, stop, resume
fromID String 录制状态更新者用户ID
comRecId String 常规录制id, 注:只有 start 状态时才有该属性
mp4RecId String mp4录制id, 注:只有 start 状态时才有该属性
  • 代码示例
1
2
3
4
5
const onRoomServerRecordStateChange = data => {
    console.log("room event type: ", data.type);
    console.log("room server record info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomServerRecordStateChange , onRoomServerRecordStateChange)

错误消息通知(TK.EVENT_TYPE.roomErrorNotice)

  • 该事件派发error消息通知

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomErrorNotice
message Object 通知信息
  • message
参数名称 类型 说明
code Number 错误状态码,见ERROR消息通知错误码
info Object 补充信息, 用于对相关状态码的补充说明
  • 代码示例
1
2
3
4
5
const onRoomErrorNotice = data => {
    console.log("room event type: ", data.type);
    console.log("room error notice info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomErrorNotice, onRoomErrorNotice)

INFO消息通知(TK.EVENT_TYPE.roomInfoNotice)

  • 该事件派发info消息通知

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomInfoNotice
message Object 通知信息
  • message
参数名称 类型 说明
code Number 错误状态码,见INFO消息通知状态码
info Object 补充信息, 用于对相关状态码的补充说明
  • 代码示例
1
2
3
4
5
const onRoomInfoNotice = data => {
    console.log("room event type: ", data.type);
    console.log("room info notice info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomInfoNotice, onRoomInfoNotice)

警告消息通知(TK.EVENT_TYPE.roomWarnNotice)

  • 该事件派发warn消息通知

  • 事件数据:

参数名称 类型 说明
type String 事件名: TK.EVENT_TYPE.roomWarnNotice
message Object 通知信息
  • message
参数名称 类型 说明
code Number 错误状态码,见WARN消息通知状态码
info Object 补充信息, 用于对相关状态码的补充说明
  • 代码示例
1
2
3
4
5
const onRoomInfoNotice = data => {
    console.log("room event type: ", data.type);
    console.log("room info notice info: ", data.message)
}
dispatcher.addEventListener(TK.EVENT_TYPE.roomInfoNotice, onRoomInfoNotice)

© 2016-2023 北京拓课网络科技有限公司 版权所有  京ICP备17018423号-1 京公网安备11010502043461号