Spaces:
Sleeping
Sleeping
| const express = require('express'); | |
| const app = express(); | |
| const bodyParser = require('body-parser'); | |
| const webrtc = require("wrtc"); | |
| let senderStream; | |
| app.use(express.static('public')); | |
| app.use(bodyParser.json()); | |
| app.use(bodyParser.urlencoded({ extended: true })); | |
| app.post("/consumer", async ({ body }, res) => { | |
| const peer = new webrtc.RTCPeerConnection({ | |
| iceServers: [ | |
| { | |
| urls: "stun:stun.stunprotocol.org" | |
| } | |
| ] | |
| }); | |
| const desc = new webrtc.RTCSessionDescription(body.sdp); | |
| await peer.setRemoteDescription(desc); | |
| senderStream.getTracks().forEach(track => peer.addTrack(track, senderStream)); | |
| const answer = await peer.createAnswer(); | |
| await peer.setLocalDescription(answer); | |
| const payload = { | |
| sdp: peer.localDescription | |
| } | |
| res.json(payload); | |
| }); | |
| app.post('/broadcast', async ({ body }, res) => { | |
| const peer = new webrtc.RTCPeerConnection({ | |
| iceServers: [ | |
| { | |
| urls: "stun:stun.stunprotocol.org" | |
| } | |
| ] | |
| }); | |
| peer.ontrack = (e) => handleTrackEvent(e, peer); | |
| const desc = new webrtc.RTCSessionDescription(body.sdp); | |
| await peer.setRemoteDescription(desc); | |
| const answer = await peer.createAnswer(); | |
| await peer.setLocalDescription(answer); | |
| const payload = { | |
| sdp: peer.localDescription | |
| } | |
| res.json(payload); | |
| }); | |
| function handleTrackEvent(e, peer) { | |
| senderStream = e.streams[0]; | |
| }; | |
| app.listen(7860, () => console.log('server started')); |