close

@moq/lite
TypeScript icon, indicating that this package has built-in type declarations

0.2.3 • Public • Published

Media over QUIC

@moq/lite

npm version TypeScript

A TypeScript Media over QUIC (MoQ) client for both browsers and server JS/TS environments. The @moq/lite client specifically implements the networking layer called moq-lite, handling real-time data delivery to/from moq relays.

Check out hang for a higher-level media library that uses this package.

Note: moq-lite is a subset of the IETF moq-transport draft. moq-lite is forwards compatible with moq-transport, so it works with any moq-transport CDN (ex. Cloudflare). See the compatibility docs for details.

Quick Start

npm add @moq/lite
# or
pnpm add @moq/lite
bun add @moq/lite
yarn add @moq/lite
# etc

Server-side usage

@moq/lite works on both browsers and servers, however in JS/TS server environments (Node, Bun) WebTransport is not yet available, so @moq/lite will default to WebSockets communication with the relay.

Bun and Node v21+ have WebSockets built in, but older versions of Node do not, so for older versions of Node you will need the WebSockets polyfill to use @moq/lite

import WebSocket from 'ws';
import * as Moq from '@moq/lite';
// Polyfill WebSocket for MoQ
globalThis.WebSocket = WebSocket;

You can optionally enable WebTransport and full HTTP3/Quic on server environments with the following (experimental) polyfill

npm install @fails-components/webtransport
npm install @fails-components/webtransport-transport-http3-quiche

Which you would load as follows

import { WebTransport, quicheLoaded } from '@fails-components/webtransport';
global.WebTransport = WebTransport;
import * as Moq from '@moq/lite'
await quicheLoaded; //This is a promise, connect after it resolves

Examples

License

Licensed under either:

Readme

Keywords

none