This is a example project demonstrating how to create a basic video call application with UIX. Encrypted end-to-end video calls are established via DATEX and transmitted over a WebRTC connection.
This project consists of a single TypeScript module
(frontend/entrypoint.tsx
) containing the UI and
video call logic. Additionally, CSS styles are defined in
frontend/entrypoint.css
.
Establishing a video call happens in four steps:
First, a video stream for the current device is requested using the navigator media API:
const ownMediaStream = await navigator.mediaDevices.getUserMedia({
video: true,
audio: true,
}).catch(console.error);
When the "Call" button is clicked, this media stream is sent to another endpoint
by calling CallManager.call
on the remote endpoint:
await CallManager.call.to(remoteEndpoint.val)(ownMediaStream);
On the remote endpoint, inside the CallManager.call
function, the passed media
stream is displayed in the remote video view:
remoteVideo.srcObject = mediaStream;
The remote endpoint also returns its own media stream from the
CallManager.call
function, which is then again displayed in the local
endpoint's remote video view:
remoteVideo.srcObject = await CallManager.call.to(remoteEndpoint.val)(
ownMediaStream,
);
© unyt 2025 • unyt.org