Meeting Metadata
All metadata pertaining to a meeting is stored in meeting.meta. This includes important information about the meeting state, type, and connections.
The meeting.meta object contains the following properties:
viewType- Indicates the type of the meeting. Possible values areWEBINAR,GROUP_CALLroomType- Indicates whether the meeting is a group-call or a webinarmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmediaState- Media connection statesocketState- Socket connection state
The meeting.meta object contains the following properties:
viewType- Indicates the type of the meeting. Possible values areWEBINAR,GROUP_CALLroomType- Indicates whether the meeting is a group-call or a webinarmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmediaState- Media connection statesocketState- Socket connection state
The meeting.meta object contains the following properties:
meetingId- The unique identifier of the meetingmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmeetingType- Indicates the meeting type, which can be one ofGROUP_CALL,WEBINAR,AUDIO_ROOM, orLIVESTREAMfrom theRtkMeetingTypeenummeetingConfig- The configuration of the meeting containing audio and video settingsmeetingState- The state of the meeting of typeRtkMeetingStateauthToken- User's authentication token for the meetingselfActiveTab- Information about the currently active tab for the local participantmediaConnectionState- The current state of the media connectionsocketConnectionState- The current state of the socket connection
The meeting.meta object contains the following properties:
meetingId- The unique identifier of the meetingmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmeetingType- Indicates the meeting type, which can be one of.groupCall,.webinar,.audioRoom, or.livestreamfrom theRtkMeetingTypeenummeetingConfig- The configuration of the meeting containing audio and video settingsmeetingState- The state of the meeting of typeRtkMeetingStateauthToken- User's authentication token for the meetingselfActiveTab- Information about the currently active tab for the local participantmediaConnectionState- The current state of the media connectionsocketConnectionState- The current state of the socket connection
The meeting.meta object contains the following properties:
meetingId- The unique identifier of the meetingmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmeetingType- Indicates the meeting type, which can be one ofgroupCall,webinar, orlivestreamfrom theRtkMeetingTypeenumactiveTab- Information about the currently active tab for the local participant
The meeting.meta object contains the following properties:
viewType- Indicates the type of the meeting. Possible values areWEBINAR,GROUP_CALLroomType- Indicates whether the meeting is a group-call or a webinarmeetingTitle- The title of the meetingmeetingStartedTimestamp- The timestamp when the meeting startedmediaState- Media connection statesocketState- Socket connection state
To access meeting metadata, use the meeting.meta object.
// Destructure the metadata to get meetingTitleconst { meetingTitle } = meeting.meta;
if (meeting.self.roomJoined) { console.log( `The local user has joined a meeting with title ${meetingTitle}.`, );}import { useRealtimeKitSelector } from "@cloudflare/realtimekit-react";import { useEffect } from "react";
function MeetingInfo() { const [meetingTitle, roomJoined] = useRealtimeKitSelector((m) => [ m.meta.meetingTitle, m.self.roomJoined, ]);
useEffect(() => { if (roomJoined) { console.log( `The local user has joined a meeting with title ${meetingTitle}.`, ); } }, [roomJoined, meetingTitle]);
return null;}val meetingTitle = meeting.meta.meetingTitlelet meetingTitle = meeting.meta.meetingTitlefinal meetingTitle = meeting.meta.meetingTitle;print("The local user has joined ${meetingTitle}.");import { useRealtimeKitSelector } from "@cloudflare/realtimekit-react-native";import { useEffect } from "react";
const [meetingTitle, roomJoined] = useRealtimeKitSelector((m) => [ m.meta.meetingTitle, m.self.roomJoined,]);
useEffect(() => { if (roomJoined) { console.log( `The local user has joined a meeting with title ${meetingTitle}.`, ); }}, [roomJoined, meetingTitle]);The meta object also emits events for indicating changes in the connection state of the meeting.
Updates to the media connection (WebRTC connection used for the transfer of actual media) are sent via the mediaConnectionUpdate event.
meeting.meta.on("mediaConnectionUpdate", ({ transport, state }) => { // transport - 'consuming' | 'producing' // state - 'new' | 'connecting' | 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Media connection ${transport} is now ${state}`);});The mediaConnectionUpdate event provides:
transport- Either'consuming'(receiving media) or'producing'(sending media)state- Connection state:'new','connecting','connected','disconnected','reconnecting', or'failed'
Updates to the media connection (WebRTC connection used for the transfer of actual media) are sent via the mediaConnectionUpdate event.
import { useRealtimeKitClient } from "@cloudflare/realtimekit-react";import { useEffect } from "react";
function MediaConnectionMonitor() { const [meeting] = useRealtimeKitClient();
useEffect(() => { if (meeting) { const handleMediaConnection = ({ transport, state }) => { // transport - 'consuming' | 'producing' // state - 'new' | 'connecting' | 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Media connection ${transport} is now ${state}`); };
meeting.meta.on("mediaConnectionUpdate", handleMediaConnection);
return () => { meeting.meta.off("mediaConnectionUpdate", handleMediaConnection); }; } }, [meeting]);
return null;}The mediaConnectionUpdate event provides:
transport- Either'consuming'(receiving media) or'producing'(sending media)state- Connection state:'new','connecting','connected','disconnected','reconnecting', or'failed'
You can access the current media connection state directly from the metadata.
val mediaConnectionState = meeting.meta.mediaConnectionStateYou can access the current media connection state directly from the metadata.
let mediaConnectionState = meeting.meta.mediaConnectionStateMedia connection events are not available in Flutter. Monitor the connection state through the meeting state changes.
Updates to the media connection (WebRTC connection used for the transfer of actual media) are sent via the mediaConnectionUpdate event.
meeting.meta.on("mediaConnectionUpdate", ({ transport, state }) => { // transport - 'consuming' | 'producing' // state - 'new' | 'connecting' | 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Media connection ${transport} is now ${state}`);});The mediaConnectionUpdate event provides:
transport- Either'consuming'(receiving media) or'producing'(sending media)state- Connection state:'new','connecting','connected','disconnected','reconnecting', or'failed'
Updates to the WebSocket connection (used for chat, polls, and other basic signaling) are sent via the socketConnectionUpdate event.
meeting.meta.on( "socketConnectionUpdate", ({ state, reconnectionAttempt, reconnected }) => { // state - 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Socket connection is now ${state}`);
if (reconnectionAttempt) { console.log(`Reconnection attempt: ${reconnectionAttempt}`); }
if (reconnected) { console.log("Successfully reconnected"); } },);The socketConnectionUpdate event provides:
state- Connection state:'connected','disconnected','reconnecting', or'failed'reconnectionAttempt- The number of reconnection attempts made (if reconnecting)reconnected- Boolean indicating if the connection was successfully reestablished
Updates to the WebSocket connection (used for chat, polls, and other basic signaling) are sent via the socketConnectionUpdate event.
import { useRealtimeKitClient } from "@cloudflare/realtimekit-react";import { useEffect } from "react";
function SocketConnectionMonitor() { const [meeting] = useRealtimeKitClient();
useEffect(() => { if (meeting) { const handleSocketConnection = ({ state, reconnectionAttempt, reconnected, }) => { // state - 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Socket connection is now ${state}`);
if (reconnectionAttempt) { console.log(`Reconnection attempt: ${reconnectionAttempt}`); }
if (reconnected) { console.log("Successfully reconnected"); } };
meeting.meta.on("socketConnectionUpdate", handleSocketConnection);
return () => { meeting.meta.off("socketConnectionUpdate", handleSocketConnection); }; } }, [meeting]);
return null;}The socketConnectionUpdate event provides:
state- Connection state:'connected','disconnected','reconnecting', or'failed'reconnectionAttempt- The number of reconnection attempts made (if reconnecting)reconnected- Boolean indicating if the connection was successfully reestablished
You can access the current socket connection state directly from the metadata.
val socketConnectionState = meeting.meta.socketConnectionStateYou can access the current socket connection state directly from the metadata.
let socketConnectionState = meeting.meta.socketConnectionStateSocket connection events are not available in Flutter. Monitor the connection state through the meeting state changes.
Updates to the WebSocket connection (used for chat, polls, and other basic signaling) are sent via the socketConnectionUpdate event.
meeting.meta.on( "socketConnectionUpdate", ({ state, reconnectionAttempt, reconnected }) => { // state - 'connected' | 'disconnected' | 'reconnecting' | 'failed'
console.log(`Socket connection is now ${state}`);
if (reconnectionAttempt) { console.log(`Reconnection attempt: ${reconnectionAttempt}`); }
if (reconnected) { console.log("Successfully reconnected"); } },);The socketConnectionUpdate event provides:
state- Connection state:'connected','disconnected','reconnecting', or'failed'reconnectionAttempt- The number of reconnection attempts made (if reconnecting)reconnected- Boolean indicating if the connection was successfully reestablished
Explore related topics:
- Meeting Object Explained - Comprehensive meeting object reference
- Session Lifecycle - Understanding meeting states and transitions
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Directory
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- © 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark
-