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
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;}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}`);});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'
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"); } },);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
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
-