400-881-9892

文档中心

官方文档,可查阅产品介绍、快速入门、用户指南、开发指南、API参考、SDK参考、帮助等信息。

文档中心 互动课堂

TKRoomSDK event description

    TKRoomSDK event description

    Mount the listener
    • The room event listener needs to be mounted on the room instance. You can customize an event dispatcher to forward events
    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()
    
    Joined the room successfully(TK.EVENT_TYPE.roomConnected)
    • This event is dispatched when the current user successfully enters the room. You can use this event to determine the user's connection status
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomConnected
    message Array The signaling messages currently existing in the room (messages published and saved via pubMsg)
    isReconnect Boolean Whether it is a reconnection to the room
    • Code example
    1
    2
    3
    4
    5
    6
    const onRoomConnectSuccess = data => {
        console.log("room event type: ", data.type);
        console.log("connect success data: ", data.message);
        alert("Succeed in joining the room")
    }
    dispatcher.addEventListener(TK.EVENT_TYPE.roomConnected, onRoomConnectSuccess)
    
    Failed to join the room(TK.EVENT_TYPE.roomConnectFail)
    • This event is dispatched when the current user fails to enter the room. You can use this event to determine the user's connection status

    • Event data:

    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomConnectFail
    message Object source: Indicates which step of the join room operation has been reached.error: The reason for the error. Possible status code values can be found in the global error codes
    • Code example
    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("Fail to join the room")
        }
        dispatcher.addEventListener(TK.EVENT_TYPE.roomConnectFail , onRoomConnectFailed)
    
    Room connection interrupted(TK.EVENT_TYPE.roomDisconnected)
    • This event is dispatched when the connection to the current room is interrupted. Possible reasons include network disconnection, network jitter, or a weak network environment. You can listen to this event to provide corresponding prompts
    • When the room connection is interrupted, the SDK will automatically attempt to reconnect internally Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomDisconnected
    • Code example
    1
    2
    3
    4
    5
      const onRoomDisconnect = data => {
        console.log("room event type: ", data.type);
        alert("Network jitter, reconnecting...")
    }
    dispatcher.addEventListener(TK.EVENT_TYPE.roomDisconnected , onRoomDisconnect)
    
    Leave the room(TK.EVENT_TYPE.roomLeaveRoom)
    • This event is dispatched when the current user successfully leaves the room. At this point, the user's connection has been disconnected. You can listen to this event to perform some cleanup tasks
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomLeaveRoom
    • Code example
    1
    2
    3
    4
    5
      const onRoomLeaveRoom = data => {
        console.log("room event type: ", data.type);
        alert("The current user has exited the classroom")
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomLeaveRoom , onRoomLeaveRoom)
    
    User joined the room(TK.EVENT_TYPE.roomParticipantJoin)
    • This event is dispatched when other users successfully join the room (rules may differ in large-scale rooms). You can listen to this event to notify users of their successful entry
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomParticipantJoin
    user Object User information of the person joining the room
    • Code example
    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 + "Joined the room")
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantJoin , onRoomUserJoin)
    
    User left the room(TK.EVENT_TYPE.roomParticipantLeave)
    • This event is dispatched when other users successfully leave the room (rules may differ in large-scale rooms). You can listen to this event to notify users of their departure
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomParticipantLeave
    user Object User information of the person leaving the room
    • Code example
    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 + "Left the room")
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantLeave , onRoomUserLeave)
    
    The user was kicked out of the room(TK.EVENT_TYPE.roomParticipantEvicted)
    • This event is dispatched when a user is kicked out of the room. Only the user who is kicked out will receive this event. You can listen to this event to provide relevant notifications
    • In some cases, the server may proactively kick someone out of the room. The following are explanations for the message.reasoncode when the server kicks someone out
    • 400, A user with the same ID has entered the room repeatedly. The user who entered the room first will be kicked out
    • 401, The room has reached the set end time, or the teacher left the room and did not return within the specified time
    • 402, The room has been disabled (via the backend or WebAPI)
    • Event data:
    Parameter name Type Description
    type String Eventname: TK.EVENT_TYPE.roomParticipantEvicted
    user Object Information of the user who was kicked out
    message Object Reason and related information for being kicked out
    • Code example
    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( "You have been kicked out of the room")
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomParticipantEvicted , onRoomUseEvicted)
    
    Received a chat message(TK.EVENT_TYPE.roomTextMessage)
    • The event is triggered when a room chat message is received. Users can listen to this event to display the chat message
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomTextMessage
    user Object Sender information of the chat message
    message Object Content of the chat message
    userid String Sender ID of the chat message
    nickname String Nickname of the chat message sender
    role Number Role of the chat message sender, specific values refer to the room roles
    • Code example
    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)
    
    Custom message published(TK.EVENT_TYPE.roomPubmsg)
    • The event is triggered when a custom room message is received. Users can listen to this event to respond to the start of various custom room operations
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomPubmsg
    message Object Content of the custom published message
    • Code example
    1
    2
    3
    4
    5
    6
    7
      const onRoomPubmsg = data => {
        console.log("room event type: ", data.type);
        console.log("room message info: ", data.message)
        if (data.message.name === "testStart") {
            consoel.log("The exam has begun")}
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomPubmsg , onRoomPubmsg)
    
    Custom message deleted(TK.EVENT_TYPE.roomDelmsg)
    • The event is triggered when a custom room deletion message is received. Users can listen to this event to respond to the end of various custom room operations
    • A custom message must first be published in the room before a corresponding custom message deletion can be received
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomDelmsg
    message Object Content of the custom deletion message
    • Code example
    1
    2
    3
    4
    5
    6
    7
      const onRoomDelmsg = data => {
        console.log("room event type: ", data.type);
        console.log("room message info: ", data.message)
        if (data.message.name === "testStart") {
            consoel.log("The exam is over")}
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomDelmsg , onRoomDelmsg)
    
    User attributes changed(TK.EVENT_TYPE.roomUserPropertyChanged)
    • The event is triggered when a user's attributes change. Users who match the message recipient role (see message sender role) will receive this message. This message can be listened to for room-related business concerning user attribute changes
    • In the large room mode, if the toId of changeUserProperty is TK.MSG_TO_ALLUSER or TK.MSG_TO_ALLEXCEPTSENDER, then the user attribute changes of users who have not taken the stage are only forwarded to the caller (i.e., the one who calls changeUserProperty) and the target user (i.e., the user whose attributes are changed). However, if the user attribute changes belong to a user who has taken the stage (i.e., a user publishing audio/video), the changes are forwarded to the specified users according to the toId.
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomUserPropertyChanged
    user Object Information of the user whose attributes are modified
    message Object The modified user attributes
    userId String The ID of the user whose attributes are modified
    fromID String The ID of the user who initiated the attribute modification
    • Code example
    1
    2
    3
    4
    5
    6
    7
      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("My user attributes have been modified. The modified attribute is "level", and my new level is: " + data.message.level)}
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomUserPropertyChanged , onRoomUserPropertyChanged)
    
    User's video publishing status changed(TK.EVENT_TYPE.roomUserVideoStateChanged)
    • The event is triggered when the user's video publishing status changes. You can listen to this event to play or close the user's video
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomUserVideoStateChanged
    message Object Video publishing status information, with detailed information as follows
    • message
    Parameter name Type Description
    userId String The ID of the user whose video publishing status has changed
    published Boolean Publish or stop publishing
    deviceId String Note: The deviceId is only available for videos published in multi-video mode
    • Code example
    1
    2
    3
    4
    5
    6
    7
    8
    9
      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)
    
    User's audio publishing status changed(TK.EVENT_TYPE.roomUserAudioStateChanged)
    • The event is triggered when the user's audio status changes. You can listen to this event to play or mute the user's audio
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomUserAudioStateChanged
    message Object Video publishing status information, with detailed information as follows
    • message
    Parameter name Type Description
    userId String The user ID whose audio publishing status has changed
    published Boolean Publish or stop publishing
    • Code example
    1
    2
    3
    4
    5
    6
    7
    8
    9
      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)
    
    User's media file sharing status changed(TK.EVENT_TYPE.roomUserMediaStateChanged)
    • The event is triggered when the user's media file sharing status changes. You can listen to this event to play or close the shared media file
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomUserMediaStateChanged
    message Object Shared media file publishing status information, with detailed information as follows
    • message
    Parameter name Type Description
    userId String The user ID who shared the media file
    type String Media file type: media or file
    published Boolean Publish or stop publishing
    attributes Object Media file attributes. Including media file width and height, duration, file name, whether it is paused, whether it contains audio and video, etc
    • Code example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
      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)
    
    User's screen sharing status changed(TK.EVENT_TYPE.roomUserScreenStateChanged)
    • The event is triggered when the user's screen sharing status changes. You can listen to this event to play or close the shared screen
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomUserScreenStateChanged
    message Object Screen sharing publishing status information, with detailed information as follows
    • message
    Parameter name Type Description
    userId String The user ID who shared the screen
    type String Screen sharing type: screen
    published Boolean Publish or stop publishing
    attributes Object Screen sharing stream attributes. Including the video stream width and height, whether it contains audio, whether it contains video, etc
    • Code example
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
      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)
    
    User's media file sharing attributes updated(TK.EVENT_TYPE.roomUserMediaAttributesUpdate)
    • The event is triggered when the attributes of a shared media file change. You can listen to this event to provide prompts for pausing or resuming playback of the shared media file (video will automatically pause)
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomUserMediaAttributesUpdate
    message Object Shared media file publishing attribute update information, with detailed information as follows
    • message
    Parameter name Type Description
    userId String The user ID who shared the media file
    type String Media file type: media or file
    attributes Object Media file attributes. Including media file width and height, duration, file name, whether it is paused, whether it contains audio and video, etc
    updateAttributes Object Updated media file attributes
    • Code example
    1
    2
    3
    4
    5
    6
    7
      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)
    
    Media device succeeded(TK.EVENT_TYPE.deviceSuccess)
    • After the room object is initialized (init), this event will be triggered if there are available devices
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.deviceSuccess
    message Object Types of available devices { kind: "videoinput"
    • Code example
    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)
    
    Media device failed(TK.EVENT_TYPE.deviceFailure)
    • After the room object is initialized (init), this event will be triggered if audio or video cannot be used normally due to various reasons
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.deviceFailure
    message Object Information of the unavailable devices { kind, deviceId }
    code Number Device failure error code, for specific values, refer to the SDK error codes
    • Code example
    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)
    
    Media device changed(TK.EVENT_TYPE.deviceChange)

    -After the room object is initialized (init), this event will be triggered if there are any additions or removals of audio or video devices - Event data:

    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.deviceChange
    message Object Changed device information{ type, devices }
    • Code example
    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(equipment addition) | TK.DEVICE_STATE.DEVICE_REMOVE(equipment removal)
        console.log("device change devices: ", data.message.devices)
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.deviceChange , onDeviceChange)
    
    Primary camera changed(TK.EVENT_TYPE.roomUserMainCameraChanged)
    • The event is triggered when the main camera changes in multi-camera mode
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomUserMainCameraChanged
    message Object Information about the change of the main camera
    • message
    Parameter name Type Description
    userId String User ID
    deviceId String The device ID of the new main camera
    • Code example
    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 + "The main camera device has changed, and the new device id is" + data.message.deviceId)
      }
      dispatcher.addEventListener(TK.EVENT_TYPE.roomUserMainCameraChanged , onRoomUserMainCameraChanged)
    
    First video frame(TK.EVENT_TYPE.roomFirstVideoFrame)
    • The event is triggered when the video window is created and the video is ready to play
    • If the joinRoom is not successful (i.e., the TK.EVENT_TYPE.roomConnected event is not received), then the userId will be ""
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomFirstVideoFrame
    message Object First frame of video related information
    • message
    Parameter name Type Description
    userId String User ID
    mediaType String Media type, for specific values, refer to the media type documentation
    width Number Video width
    height Number Video height
    deviceId String Video device ID. Note: This attribute is only available in multi-camera mode
    • Code example
    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)
    
    First audio frame(TK.EVENT_TYPE.roomFirstAudioFrame)
    • The event is triggered when the audio player is created and the audio is ready to play
    • If the joinRoom is not successful (i.e., the TK.EVENT_TYPE.roomConnected event is not received), then the userId will be ""
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomFirstAudioFrame
    message Object Information related to the first frame of audio
    • message
    Parameter name Type Description
    userId String User ID
    mediaType String Media type, for specific values, refer to the media type documentation
    File list(TK.EVENT_TYPE.roomFiles)
    • The event is triggered when the file information in the room is fully retrieved. You can listen to this event to obtain the currently available files in the room
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomFiles
    message Array Room file information array. The structure of the file object is described as follows
    • fileInfo
    Parameter name Type Description
    fileid Number File ID
    companyid String Enterprise ID
    filename String File name
    uploaduserid String Uploader ID
    downloadpath String File download path
    swfpath String File view path
    filetype String File type
    pagenum Number Total number of pages. This field is only valid for ordinary static files and is not applicable to dynamic PPT and H5 files
    filecategory Number File category,0:room, 1:system
    fileprop Number File classification:0: Ordinary document,
    1-2: Dynamic PPT (1 for old version, 2 for new version),3: h5 document
    type Number Whether it is the default document:
    0: Non-default document,
    1: Default document
    • Code example
    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)
    
    Add file(TK.EVENT_TYPE.roomAddFile)
    • The event is triggered when a new file is successfully added to the room
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomAddFile
    message Object Description of the added file
    • message
    Parameter name Type Description
    fileid Number The ID of the added file
    fromID String The user ID of the uploader
    • Code example
    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)
    
    Delete file(TK.EVENT_TYPE.roomDeleteFile)
    • The event is triggered when a file is deleted in the room
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomDeleteFile
    message Object Description of the deleted file
    • message
    Parameter name Type Description
    fileid Number The ID of the deleted file
    fromID String The user ID of the deleter
    fileinfo Object Information of the deleted file
    • Code example
    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)
    
    Update file(TK.EVENT_TYPE.roomUpdateFile)
    • The event is triggered when the file information in the room is updated
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomUpdateFile
    message Object Description of the updated file
    • message
    Parameter name Type Description
    fileid Number The ID of the updated file
    fromID String The user ID of the updater
    fileinfo Object Information of the updated file
    • Code example
    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)
    
    Room mode changed(TK.EVENT_TYPE.roomModeChanged)
    • The event is triggered when the room mode changes, such as switching from a normal room to a large room mode due to an excessive number of people in the classroom
    • If it is the large room (i.e., large-scale room) mode, which means the roomMode is TK.ROOM_MODE.BIG_ROOM, certain interfaces or events will undergo changes. For details, refer to the Large Room (Large-Scale Room) Mode Description
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomModeChanged
    message Object New room mode { roomMode: roomMode }, for specific values, refer to the room mode documentation
    • Code example
    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)
    
    Server address updated(TK.EVENT_TYPE.roomServerAddressUpdate)
    • The event is triggered when the server address is updated
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomServerAddressUpdate
    message Object New server address information
    • message
    Parameter name Type Description
    web_protocol String Protocol for web requests
    web_host String Domain name for web requests
    web_port Number Port for web requests
    doc_protocol String Protocol for document loading
    doc_host String Domain name for document loading
    doc_port Number Port for document loading
    backup_doc_protocol String Protocol for backup document loading
    backup_doc_host_list Array List of domain names for backup document loading
    backup_doc_port Number Port for backup document loading
    • Code example
    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)
    
    User's network status changed(TK.EVENT_TYPE.roomUserNetworkStateChanged)
    • The event is triggered to dispatch user network connection status messages
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomUserNetworkStateChanged
    message Object Network status information
    • message
    Parameter name Type Description
    userId String User ID
    deviceId String Video device ID. Note: The deviceId is only available for videos published in multi-video mode
    networkStatus Object Network status data, with detailed data format as follows
    • 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
    {
        //  Video data statistics
        video:{
            bitsPerSecond:Bandwidth bps,
            packetsLost:Packet loss count ,
            totalPackets:Total packet count ,
            packetsLostRate:Video packet loss rate ,
            currentDelay:Delay ,
            frameRate:Frame rate ,
            frameWidth:Video width ,
            frameHeight: Video height ,
            timestamp:Timestamp ,
            netquality:Network quality (for possible values, refer to [Network Status Quality])    },
        // Audio data statistics
        audio:{
            bitsPerSecond:Bandwidth bps ,
            packetsLost:Packet loss count,
            totalPackets:Total packet count ,
            packetsLostRate:Audio packet loss rate ,
            currentDelay:Delay ,
            timestamp:Timestamp ,
            netquality:Network quality (for possible values, refer to [Network Status Quality])    }}
    
    - Code example

    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)
    
    User's network status statistics(TK.EVENT_TYPE.roomRtcStatsReportEvent)
    • The event is triggered to dispatch the current user's network status statistics message
    • The event begins to be dispatched once the user enters the classroom, with a frequency of 1 time per second
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomRtcStatsReportEvent
    message Object Network status information
    • message
    Parameter name Type Description
    stats Object Event data object, detailed as follows
    • stats
    Parameter name Type Description
    audioDelay Number Audio publishing delay (ms)
    videoDelay Number Video publishing delay(ms)
    inAudioDelay Number Audio subscription delay(ms)
    inVideoDelay Number Video subscription delay(ms)
    inAudioKBitRate Number Audio subscription bitrate
    inVideoKBitRate Number Video subscription bitrate
    inBytes Number Number of bytes subscribed
    outBytes Number Number of bytes published
    inPackets Number Number of subscription packets
    outPackets Number Number of published packets
    downlinkDelay Number Total subscription delay(ms)
    uplinkDelay Number Total publishing delay(ms)
    downlinkDelayLevel Number Downlink network quality, refer to Network Status Quality
    uplinkDelayLevel Number Uplink network quality, refer to Network Status Quality
    duration Number Total duration(ms)
    • Code example
    1
    2
      const onRoomRtcStatsReportEvent = data => {
        const stats = data.message.stats}dispatcher.addEventListener(TK.EVENT_TYPE.roomRtcStatsReportEvent , onRoomRtcStatsReportEvent)
    
    Server recording status updated(TK.EVENT_TYPE. roomServerRecordStateChange)
    • The event is triggered when the server recording status is updated
    • Event data
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomServerRecordStateChange
    message Object Current server recording status information
    • message
    Parameter name Type Description
    state String Recording status:start, pause, stop, resume
    fromID String User ID of the recorder status updater
    comRecId String Regular recording ID. Note: This attribute is only available when the status is start
    mp4RecId String MP4 recording ID. Note: This attribute is only available when the status is start
    • Code example
    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)
    
    Error message notification(TK.EVENT_TYPE.roomErrorNotice)
    • The event is triggered to dispatch error message notifications
    • Event data:
    Parameter name Type Description
    type String Event name:TK.EVENT_TYPE.roomErrorNotice
    message Object Notification information
    • message
    Parameter name Type Description
    code Number Error status code, refer to ERROR message notification error codes
    info Object Supplementary information, used to provide additional explanations for the relevant status codes
    • Code example
    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 message notification(TK.EVENT_TYPE.roomInfoNotice)
    • The event is triggered to dispatch info message notifications
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomInfoNotice
    message Object Notification information
    • message
    Parameter name Type Description
    code Number Error status code, refer to INFO message notification status codes
    info Object Supplementary information, used to provide additional explanations for the relevant status codes
    • Code example
    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)
    
    Warning message notification(TK.EVENT_TYPE.roomWarnNotice)
    • The event is triggered to dispatch warn message notifications
    • Event data:
    Parameter name Type Description
    type String Event name: TK.EVENT_TYPE.roomWarnNotice
    message Object Notification information
    • message
    Parameter name Type Description
    code Number Error status code, refer to WARN message notification status codes
    info Object Supplementary information, used to provide additional explanations for the relevant status codes
    • Code example
    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)