Pepguy commited on
Commit
64a031b
·
verified ·
1 Parent(s): 1be9c7c

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +46 -13
app.js CHANGED
@@ -1,21 +1,54 @@
1
  const express = require('express');
2
  const app = express();
 
 
3
 
4
- // Middleware to parse JSON bodies
5
- app.use(express.json());
6
 
7
- app.get('/', (req, res) => {
8
- console.log("Received JSON:", req.body);
9
- res.json({ status: "success", message: "Data received" });
10
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- app.post('/', (req, res) => {
13
- console.log("Received JSON:", req.body);
14
- res.json({ status: "success", message: "Data received" });
15
  });
16
 
17
- // Use the same port as before or use environment variable PORT
18
- const PORT = process.env.PORT || 7860;
19
- app.listen(PORT, () => {
20
- console.log(`Server running on port ${PORT}`);
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  });
 
 
 
1
  const express = require('express');
2
  const app = express();
3
+ const bodyParser = require('body-parser');
4
+ const webrtc = require('wrtc');
5
 
6
+ // Instead of one global stream, keep one per room
7
+ const roomStreams = {}; // { [roomId]: MediaStream }
8
 
9
+ app.use(express.static('public'));
10
+ app.use(bodyParser.json());
11
+ app.use(bodyParser.urlencoded({ extended: true }));
12
+
13
+ // Consumer endpoint: front-end must POST { sdp, roomId }
14
+ app.post("/consumer", async ({ body }, res) => {
15
+ const { sdp, roomId } = body;
16
+ const stream = roomStreams[roomId];
17
+ if (!stream) {
18
+ return res.status(404).json({ error: "No broadcast for room " + roomId });
19
+ }
20
+
21
+ const peer = new webrtc.RTCPeerConnection({
22
+ iceServers: [{ urls: "stun:stun.stunprotocol.org" }]
23
+ });
24
+
25
+ // add the broadcaster’s tracks for this room
26
+ stream.getTracks().forEach(track => peer.addTrack(track, stream));
27
+
28
+ await peer.setRemoteDescription(new webrtc.RTCSessionDescription(sdp));
29
+ const answer = await peer.createAnswer();
30
+ await peer.setLocalDescription(answer);
31
 
32
+ res.json({ sdp: peer.localDescription });
 
 
33
  });
34
 
35
+ // Broadcast endpoint: front-end must POST { sdp, roomId }
36
+ app.post("/broadcast", async ({ body }, res) => {
37
+ const { sdp, roomId } = body;
38
+ const peer = new webrtc.RTCPeerConnection({
39
+ iceServers: [{ urls: "stun:stun.stunprotocol.org" }]
40
+ });
41
+
42
+ peer.ontrack = ({ streams }) => {
43
+ // store the incoming stream under its roomId
44
+ roomStreams[roomId] = streams[0];
45
+ };
46
+
47
+ await peer.setRemoteDescription(new webrtc.RTCSessionDescription(sdp));
48
+ const answer = await peer.createAnswer();
49
+ await peer.setLocalDescription(answer);
50
+
51
+ res.json({ sdp: peer.localDescription });
52
  });
53
+
54
+ app.listen(5000, () => console.log('SFU server running on port 5000'));