Here’s a simple example to subscribe to a broadcast in the browser:
1
Import the library
import * as Connection from "@moq/lite/Connection";import { Broadcast, Track } from "@moq/lite";
2
Connect to a relay
// Connect to a MoQ relayconst conn = await Connection.connect({ url: "https://relay.quic.video", fingerprint: "https://relay.quic.video/fingerprint"});
3
Subscribe to a broadcast
// Subscribe to a broadcast by nameconst subscriber = await conn.subscribe("my-broadcast");// Wait for tracks to be announcedconst announced = await subscriber.announced();if (!announced) throw new Error("broadcast closed");console.log("Track announced:", announced.track.name);// Subscribe to the trackconst track = await subscriber.subscribe(announced.track);// Read groups from the trackfor await (const group of track.groups()) { console.log("Group sequence:", group.sequence); // Read frames from the group for await (const frame of group.frames()) { console.log("Frame size:", frame.byteLength); // Process frame data... }}
import { WebTransport } from "@fails-components/webtransport";import * as Connection from "@moq/lite/Connection";// Make WebTransport available globallyglobalThis.WebTransport = WebTransport as any;const conn = await Connection.connect({ url: "https://relay.quic.video", fingerprint: "https://relay.quic.video/fingerprint"});// Now use the connection as normalconst subscriber = await conn.subscribe("my-broadcast");