@moq/lite
v0.1.5
Published
Media over QUIC library
Readme
@moq/lite
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: This project is a fork of the IETF MoQ specification, optimized for practical deployment with a narrower focus and exponentially simpler implementation.
Quick Start
npm add @moq/lite
# or
pnpm add @moq/lite
bun add @moq/lite
yarn add @moq/lite
# etcServer-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-quicheWhich 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 resolvesExamples
- Connection - Connect to a MoQ relay server
- Publishing - Publish data to a broadcast
- Subscribing - Subscribe to and receive broadcast data
- Discovery - Discover broadcasts announced by the server
- Server side usage - Publish from browser to a server
License
Licensed under either:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
