Einen Anruf erstellen
Spannende Zeiten — nun geben Sie Ihren Nutzern die Möglichkeit, Anrufe zu tätigen.
-
Zuallererst erhalten Sie eine Referenz auf die "Anrufen"-Taste, die im HTML definiert ist, indem Sie Folgendes am Ende von
script.jshinzufügen:jsconst callBtn = document.querySelector(".call-btn"); -
Wenn ein Nutzer auf "Anrufen" klickt, werden Sie sie nach der Peer-ID des Peers fragen, den sie anrufen möchten (die wir in der Variablen
codeingetStreamCode()speichern) und dann möchten Sie mit diesem Code eine Verbindung herstellen. Fügen Sie Folgendes unter Ihrem vorherigen Code hinzu:jscallBtn.addEventListener("click", () => { getStreamCode(); connectPeers(); const call = peer.call(code, window.localStream); // A call.on("stream", (stream) => { // B window.remoteAudio.srcObject = stream; window.remoteAudio.autoplay = true; window.peerStream = stream; showConnectedContent(); }); });Gehen wir den Code durch:
const call = peer.call(code, window.localStream): Dies erstellt einen Anruf mit demcodeundwindow.localStream, die wir zuvor zugewiesen haben. Beachten Sie, dass derlocalStreamderlocalStreamdes Nutzers sein wird. Für den Anrufer A wird es ihr Stream sein und für B, ihr eigener Stream.call.on('stream', (stream) => {: peerJS gibt uns einstream-Ereignis, das Sie auf dem erstelltencallverwenden können. Wenn ein Anruf mit dem Streaming beginnt, müssen Sie sicherstellen, dass der entfernte Stream vom Anruf den richtigen HTML-Elementen und Fenstern zugewiesen wird, und hier machen Sie das.- Die anonyme Funktion nimmt ein
MediaStream-Objekt als Argument, das Sie dann wie zuvor auf das HTML Ihres Fensters setzen müssen. Hier erhalten wir Ihr entferntes<audio>-Element und weisen den zur Funktion übergebenen Stream dersrcObject-Eigenschaft zu. - Stellen Sie sicher, dass das
autoplay-Attribut des Elements ebenfalls auftruegesetzt ist. - Stellen Sie sicher, dass der
peerStreamdes Fensters auf den zur Funktion übergebenen Stream gesetzt ist. - Zum Schluss möchten Sie den korrekten Inhalt anzeigen, also rufen Sie die
showConnectedContent()-Funktion auf, die Sie zuvor erstellt haben.
-
Um dies auszuprobieren, öffnen Sie
localhost:8000in zwei Browserfenstern und klicken Sie in einem davon auf Anrufen. Sie sollten dies sehen:
Wenn Sie die ID des anderen Peers eingeben, wird der Anruf verbunden!
Das funktioniert bisher alles, aber wir müssen dem anderen Browser die Möglichkeit geben, den Anruf anzunehmen oder abzulehnen. Das machen wir als nächstes.