debugging stream stuff

This commit is contained in:
talksik
2022-05-14 12:43:55 -05:00
parent 0f972dba53
commit 1a82c105b4
2 changed files with 25 additions and 13 deletions
@@ -141,6 +141,7 @@ export function StreamProvider({ children }: { children: React.ReactChild }) {
}); });
localPeerConnection.on('signal', (signal) => { localPeerConnection.on('signal', (signal) => {
console.log('going to call someone');
$ws.emit( $ws.emit(
ServerRequestChannels.RTC_CALL_REQUEST, ServerRequestChannels.RTC_CALL_REQUEST,
new RtcCallRequest(userIdToCall, signal), new RtcCallRequest(userIdToCall, signal),
@@ -150,7 +151,7 @@ export function StreamProvider({ children }: { children: React.ReactChild }) {
draft[userIdToCall] = localPeerConnection; draft[userIdToCall] = localPeerConnection;
}); });
}); });
}, [user, roomsMap, $ws, updatePeerMap]); //TODO: make this not run on EVERY update to roomsMap? only tuned in lists? so the separate map for that? }, [user, roomsMap, $ws, updatePeerMap, userLocalStream]); //TODO: make this not run on EVERY update to roomsMap? only tuned in lists? so the separate map for that?
const prevStream = usePrevious<MediaStream>(userLocalStream); const prevStream = usePrevious<MediaStream>(userLocalStream);
@@ -165,12 +166,16 @@ export function StreamProvider({ children }: { children: React.ReactChild }) {
}, [localStreamRef]); }, [localStreamRef]);
useEffect(() => { useEffect(() => {
if (prevStream) { // if (userLocalStream) {
Object.values(peerMap).forEach((currentPeer) => { // Object.values(peerMap).forEach((currentPeer) => {
currentPeer.removeStream(prevStream); // try {
currentPeer.addStream(userLocalStream); // currentPeer.addStream(userLocalStream);
}); // } catch (error) {
} // toast.error('problem adding stream');
// console.error(error);
// }
// });
// }
}, [userLocalStream, peerMap, prevStream]); }, [userLocalStream, peerMap, prevStream]);
console.log(peerMap); console.log(peerMap);
@@ -298,19 +298,21 @@ function LineDetails() {
function LineStreams({ broadcasters }: { broadcasters: string[] }) { function LineStreams({ broadcasters }: { broadcasters: string[] }) {
const { peerMap } = useStreams(); const { peerMap } = useStreams();
console.log(peerMap);
return ( return (
<div className="flex flex-col"> <div className="flex flex-col">
{broadcasters.map((userId) => { {broadcasters.map((userId) => {
const currentPeer = peerMap[userId]; const currentPeer = peerMap[userId];
return <Stream key={`streamDisplay-${userId}`} peer={currentPeer} />; return currentPeer && <Stream key={`streamDisplay-${userId}`} peer={currentPeer} />;
})} })}
this is the list of current streams we are going to show
</div> </div>
); );
} }
function Stream({ peer }: { peer: Peer }) { function Stream({ peer }: { peer: Peer }) {
const streamRef = useRef<HTMLAudioElement>(null); const streamRef = useRef<HTMLVideoElement>(null);
useEffect(() => { useEffect(() => {
peer.on('stream', (remotePeerStream: MediaStream) => { peer.on('stream', (remotePeerStream: MediaStream) => {
@@ -318,13 +320,18 @@ function Stream({ peer }: { peer: Peer }) {
'stream coming in from remote peer...BUT, only going to show once they broadcast', 'stream coming in from remote peer...BUT, only going to show once they broadcast',
); );
const audio = new Audio(); // const audio = new Audio();
audio.autoplay = true; // audio.autoplay = true;
audio.srcObject = remotePeerStream; // audio.srcObject = remotePeerStream;
if (streamRef?.current) streamRef.current.srcObject = remotePeerStream; if (streamRef?.current) streamRef.current.srcObject = remotePeerStream;
}); });
}, []); }, []);
return <>this is a stream component of one remote peer</>; return (
<>
this is a stream component of one remote peer
<video height={400} width={400} autoPlay muted ref={streamRef} />
</>
);
} }