Team Ai
Apppublic

Coder19/interview_system

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
client.js68 linesDownload Raw Back to webrtc
1// client.js2const signalingSocket = new WebSocket('ws://localhost:8765');3let localStream;4let remoteStream;5let peerConnection;6 7const localVideo = document.getElementById('localVideo');8const remoteVideo = document.getElementById('remoteVideo');9 10const iceServers = {11    iceServers: [12        { urls: 'stun:stun.l.google.com:19302' }, // Example STUN server13        { urls: 'turn:your.turn.server', username: 'user', credential: 'pass' }  // Optional TURN server14    ]15};16 17async function startMedia() {18    const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });19    localStream = stream;20    localVideo.srcObject = stream;21    peerConnection = new RTCPeerConnection(iceServers);22 23    // Add local media tracks to peer connection24    stream.getTracks().forEach(track => peerConnection.addTrack(track, stream));25 26    // Handle remote stream27    peerConnection.ontrack = event => {28        remoteStream = event.streams[0];29        remoteVideo.srcObject = remoteStream;30    };31 32    // Handle ICE candidates33    peerConnection.onicecandidate = event => {34        if (event.candidate) {35            signalingSocket.send(JSON.stringify({ iceCandidate: event.candidate }));36        }37    };38 39    // Handle SDP offer/answer40    signalingSocket.onmessage = async (message) => {41        const data = JSON.parse(message.data);42        43        if (data.sdp) {44            if (data.sdp.type === 'offer') {45                await peerConnection.setRemoteDescription(new RTCSessionDescription(data.sdp));46                const answer = await peerConnection.createAnswer();47                await peerConnection.setLocalDescription(answer);48                signalingSocket.send(JSON.stringify({ sdp: peerConnection.localDescription }));49            } else if (data.sdp.type === 'answer') {50                await peerConnection.setRemoteDescription(new RTCSessionDescription(data.sdp));51            }52        } else if (data.iceCandidate) {53            await peerConnection.addIceCandidate(new RTCIceCandidate(data.iceCandidate));54        }55    };56}57 58async function makeCall() {59    await startMedia();60 61    // Create and send SDP offer to server62    const offer = await peerConnection.createOffer();63    await peerConnection.setLocalDescription(offer);64    signalingSocket.send(JSON.stringify({ sdp: peerConnection.localDescription }));65}66 67makeCall(); // Initiate the WebRTC connection68