Meeting Metadata
Last updated Oct 19, 2026
All metadata pertaining to a meeting is stored in meeting.meta. This includes important information about the meeting state, type, and connections.
WebMobile
ReactWeb ComponentsAngular
Available metadata
Select a framework based on the platform you are building for.
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:
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
Access meeting metadata
To access meeting metadata, use the meeting.meta object.
// Destructure the metadata to get meetingTitle
const { 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.meetingTitle
let meetingTitle = meeting.meta.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]);
Connection events
The meta object also emits events for indicating changes in the connection state of the meeting.
Media connection updates
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.mediaConnectionState
You can access the current media connection state directly from the metadata.
let mediaConnectionState = meeting.meta.mediaConnectionState
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'
Socket connection updates
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.socketConnectionState
You can access the current socket connection state directly from the metadata.
let socketConnectionState = meeting.meta.socketConnectionState
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
Next steps
Explore related topics:
- Meeting Object Explained - Comprehensive meeting object reference
- Session Lifecycle - Understanding meeting states and transitions
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"WebPage","@id":"https://developers.cloudflare.com/realtime/realtimekit/humans/core/meeting-metadata/#page","headline":"Meeting Metadata","description":"Access meeting state, type, and connection metadata in the RealtimeKit Core SDK.","url":"https://developers.cloudflare.com/realtime/realtimekit/humans/core/meeting-metadata/","inLanguage":"en","image":"https://developers.cloudflare.com/realtime/realtimekit/humans/core/meeting-metadata/og.png?v=508ee5e10bb4b55c","dateModified":"2026-10-19","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Explore the RealtimeKit meeting object and its namespaces for participants, chat, polls, and media. title: Meeting Object Explained image: https://developers.cloudflare.com/realtime/realtimekit/humans/core/meeting-object-explained/og.png?v=3ffe26cbcdbb0f27
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/realtime/llms.txt
Use this file to discover all available pages before exploring further.
Docs