Example

Peer-to-peer video chat

Use media streams for camera and microphone data and let Trystero handle room discovery and peer connection setup.

Send and receive camera streams

Add your local stream to the room, then attach remote streams as peers arrive.

import {joinRoom} from 'trystero'

const room = joinRoom({appId: 'video-chat'}, callId)

const localStream = await navigator.mediaDevices.getUserMedia({
  audio: true,
  video: true
})

localVideo.srcObject = localStream
room.addStream(localStream)

room.onPeerJoin = peerId => {
  room.addStream(localStream, {target: peerId})
}

room.onPeerStream = (stream, peerId) => {
  const video = createPeerVideo(peerId)
  video.srcObject = stream
  video.play()
}

room.onPeerLeave = peerId => {
  removePeerVideo(peerId)
}