Only the members listed here are supported; other members are internal and can change between releases.

TypeScript
interface RtcMediaConnector {
  readonly localStream: MediaStream;  // what this participant sends
  readonly relayStreams$: Observable<Map<string, MediaStream>>; // other participants, by peer ID
}

Audio is already played by Weei. When you show a stream in a <video> element, mute the element so the sound is not doubled.

Example: a video grid

JavaScript
function videoGrid(app, root, destroy$) {
  const { rxjs, connectors } = weei.sdk;
  app.rtcService.getOrCreateConnector(connectors.RtcMediaConnector).pipe(
    rxjs.first(),
    rxjs.switchMap(media => media.relayStreams$),
    rxjs.takeUntil(destroy$)
  ).subscribe(streams => {
    root.replaceChildren(...[...streams].map(([peerId, stream]) => {
      const video = document.createElement('video');
      video.srcObject = stream;
      video.muted = true;
      video.autoplay = true;
      video.playsInline = true;
      video.dataset.peerId = peerId;
      return video;
    }));
  });
}