No-frills peer-to-peer web conferencing.
- Create a new discussion room.
- Join an existing room.
- See and hear others.
- See yourself.
- Mute your mic and camera.
- Audio mute indicators on yourself and participants.
- Have a screen name.
- Live chat.
- Send messages.
- Receive message, and know who sent them (even if a name changes).
- Breakout rooms.
- Session recording.
But feel free to file a PR.
-
Connect via URL.
- If you go to a URL with a peer id that already exists, you connect to their session.
- If you go to a URL with a peer id that doesn't exist, you become the host (with that peer id) and start a session.
-
Legitimate error handling.
- Kick everyone out if the host is destroyed / closes.
- or ... transfer host? i think this word be pretty trivial - just pick a client, send a packet saying "set
isHost
and the list of original host'sconnectedParticipants
" -- they may already have the latter information via either of the cached mappings.
- or ... transfer host? i think this word be pretty trivial - just pick a client, send a packet saying "set
- What to do if temporary disconnect?
- Figure out a way to
.reconnect()
? - Destroy the peer and revisit main page (kick them out)?
- Figure out a way to
- Kick everyone out if the host is destroyed / closes.
-
Mobile site (no video, audio + chat only).
-
Performance
- All
call
orsend
functions should be async-concurrent, so that network IO happens concurrently. - Restrict local video to 640p using sdp transform or media constraints
- Restrict outgoing video to 144p.
- Frame rate?
- Spoke-style communication? (instead of each connecting to every other, they all connect to the host which sends AV/data to every other)
- Not immediately obvious if this is a better design -- it reduces the total number of conns, but at least doubles latency for each one
- All
Releases happen automatically with commits to main
. Asset optimizations happen automatically during artifact generation using the bin/optimize.sh
script.
TBD.