/moq-wasm

Primary LanguageRustMIT LicenseMIT

MoQ WASM

Both server and browser client are written in Rust.

Implementation

  • Send/Recv SETUP message
  • Send/Recv ANNOUNCE message
  • Send/Recv SUBSCRIBE message
  • Echo back OBJECT message
  • Send/Recv GOAWAY message
  • Send/Recv SUBSCRIBE_FIN/SUBSCRIBE_RST message
  • Transfer SUBSCRIBE message
    • Manage stream of publishers
  • Transfer OBJECT message
    • Manage subscriptions

Modules

moqt-core

  • Core module for both server and client
  • Includes handlers and data structures

moqt-server

  • Module for server application

moqt-server-sample

  • Sample server application

moqt-client-sample

  • Module for browser client and sample browser client application

How to run

Generating public and private keys for the server

cd moqt-server-sample
mkdir keys
cd keys
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -out cert.pem -subj '/CN=Test Certificate' -addext "subjectAltName = DNS:localhost"

Run moqt-server-sample

  • cargo run -p moqt-server-sample

Specify the log level

  • cargo run -p moqt-server-sample -- --log <Log Level>
    • Default setting is DEBUG

Run moqt-client-sample

cd js
npm install
npm run dev
  • Add a certificate and Enable WebTransport feature in Chrome
For Mac users
./scripts/start-localhost-test-chrome.sh