Real cause of 'host can't see laptop's camera on rejoin' (and the phone- camera analogue): SFU's TrackLocalStaticRTP uses the same streamID (shortPub-kind) for every publish of a given (pubkey, kind). When a publisher supplants themselves the new track's MSID matches the old one. Per WebRTC spec the browser merges it into the SAME MediaStream object — ev.streams[0] is the same instance as before, containing BOTH the dead old track AND the new live one. Setting video.srcObject = ev.streams[0] doesn't switch the source; the video element keeps showing the old track's last frame, reports muted, and the 60s mute-window then reaps a tile that was never going to come back on its own. Fix: construct a fresh MediaStream from just ev.track. The video element binds to the new RTP cleanly and the receive-side state machine sees a real unmute as soon as packets arrive. |
||
|---|---|---|
| .. | ||
| blog | ||
| fonts | ||
| chat.html | ||
| host-your-own.html | ||
| how-it-works.html | ||
| index.html | ||
| kernel.html | ||
| stamp.js | ||
| zebra-audio.html | ||
| zebra-spaces.html | ||