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 are WEBINAR, GROUP_CALL
  • roomType - Indicates whether the meeting is a group-call or a webinar
  • meetingTitle - The title of the meeting
  • meetingStartedTimestamp - The timestamp when the meeting started
  • mediaState - Media connection state
  • socketState - Socket connection state

The meeting.meta object contains the following properties:

  • viewType - Indicates the type of the meeting. Possible values are WEBINAR, GROUP_CALL
  • roomType - Indicates whether the meeting is a group-call or a webinar
  • meetingTitle - The title of the meeting
  • meetingStartedTimestamp - The timestamp when the meeting started
  • mediaState - Media connection state
  • socketState - Socket connection state

The meeting.meta object contains the following properties:

  • meetingId - The unique identifier of the meeting
  • meetingTitle - The title of the meeting
  • meetingStartedTimestamp - The timestamp when the meeting started
  • meetingType - Indicates the meeting type, which can be one of GROUP_CALL, WEBINAR, AUDIO_ROOM, or LIVESTREAM from the RtkMeetingType enum
  • meetingConfig - The configuration of the meeting containing audio and video settings
  • meetingState - The state of the meeting of type RtkMeetingState
  • authToken - User's authentication token for the meeting
  • selfActiveTab - Information about the currently active tab for the local participant
  • mediaConnectionState - The current state of the media connection
  • socketConnectionState - The current state of the socket connection

The meeting.meta object contains the following properties:

  • meetingId - The unique identifier of the meeting
  • meetingTitle - The title of the meeting
  • meetingStartedTimestamp - The timestamp when the meeting started
  • meetingType - Indicates the meeting type, which can be one of .groupCall, .webinar, .audioRoom, or .livestream from the RtkMeetingType enum
  • meetingConfig - The configuration of the meeting containing audio and video settings
  • meetingState - The state of the meeting of type RtkMeetingState
  • authToken - User's authentication token for the meeting
  • selfActiveTab - Information about the currently active tab for the local participant
  • mediaConnectionState - The current state of the media connection
  • socketConnectionState - The current state of the socket connection

The meeting.meta object contains the following properties:

  • viewType - Indicates the type of the meeting. Possible values are WEBINAR, GROUP_CALL
  • roomType - Indicates whether the meeting is a group-call or a webinar
  • meetingTitle - The title of the meeting
  • meetingStartedTimestamp - The timestamp when the meeting started
  • mediaState - Media connection state
  • socketState - 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:

Was this helpful?

YesNo

On this page

Meeting Metadata - 图1Docs

{"@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


Skip to content

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.