Alvin3y1 commited on
Commit
7e4862f
·
verified ·
1 Parent(s): 59c4cb6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -30
app.py CHANGED
@@ -1,8 +1,7 @@
1
  from aiohttp import web
2
  import json
3
 
4
- # In-memory storage for signaling sessions
5
- # Format: { "session_id": {"offer": {}, "answer": {}, "candidates": []} }
6
  sessions = {}
7
 
8
  # Cloudflare TURN Credentials
@@ -18,48 +17,39 @@ ICE_CONFIG = {
18
  }
19
 
20
  async def handle_post(request):
21
- """Handles uploading Offers, Answers, and ICE Candidates"""
22
  data = await request.json()
23
  sid = data.get("id")
24
  msg_type = data.get("type")
25
- payload = data.get("payload")
26
-
27
- if not sid:
28
- return web.json_response({"error": "No ID provided"}, status=400)
29
-
30
  if sid not in sessions:
31
  sessions[sid] = {"offer": None, "answer": None, "candidates": []}
32
-
33
- if msg_type == "offer":
34
- sessions[sid]["offer"] = payload
35
- elif msg_type == "answer":
36
- sessions[sid]["answer"] = payload
37
- elif msg_type == "candidate":
38
- sessions[sid]["candidates"].append(payload)
39
-
40
  return web.json_response({"status": "stored"})
41
 
42
  async def handle_get(request):
43
- """Handles retrieving session data and TURN config"""
44
  sid = request.query.get("id")
45
  if not sid or sid not in sessions:
46
- return web.json_response({"error": "Session not found"}, status=404)
47
 
48
- response_data = sessions[sid].copy()
49
- response_data["iceConfig"] = ICE_CONFIG
50
- return web.json_response(response_data)
51
 
52
- # CORS Middleware to allow browsers to talk to this server
53
  async def cors_middleware(app, handler):
54
  async def middleware(request):
55
  if request.method == 'OPTIONS':
56
- response = web.Response()
57
  else:
58
- response = await handler(request)
59
- response.headers['Access-Control-Allow-Origin'] = '*'
60
- response.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
61
- response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
62
- return response
63
  return middleware
64
 
65
  app = web.Application(middlewares=[cors_middleware])
@@ -67,5 +57,5 @@ app.router.add_post('/signal', handle_post)
67
  app.router.add_get('/signal', handle_get)
68
 
69
  if __name__ == '__main__':
70
- print("WebRTC Broker Server starting on http://0.0.0.0:3000")
71
- web.run_app(app, port=7860)
 
1
  from aiohttp import web
2
  import json
3
 
4
+ # Storage for active handshake sessions
 
5
  sessions = {}
6
 
7
  # Cloudflare TURN Credentials
 
17
  }
18
 
19
  async def handle_post(request):
 
20
  data = await request.json()
21
  sid = data.get("id")
22
  msg_type = data.get("type")
23
+ if not sid: return web.json_response({"error": "No ID"}, status=400)
24
+
 
 
 
25
  if sid not in sessions:
26
  sessions[sid] = {"offer": None, "answer": None, "candidates": []}
27
+
28
+ if msg_type == "offer": sessions[sid]["offer"] = data["payload"]
29
+ elif msg_type == "answer": sessions[sid]["answer"] = data["payload"]
30
+ elif msg_type == "candidate": sessions[sid]["candidates"].append(data["payload"])
31
+
 
 
 
32
  return web.json_response({"status": "stored"})
33
 
34
  async def handle_get(request):
 
35
  sid = request.query.get("id")
36
  if not sid or sid not in sessions:
37
+ return web.json_response({"status": "waiting", "offer": None, "iceConfig": ICE_CONFIG})
38
 
39
+ resp = sessions[sid].copy()
40
+ resp["iceConfig"] = ICE_CONFIG
41
+ return web.json_response(resp)
42
 
 
43
  async def cors_middleware(app, handler):
44
  async def middleware(request):
45
  if request.method == 'OPTIONS':
46
+ resp = web.Response()
47
  else:
48
+ resp = await handler(request)
49
+ resp.headers['Access-Control-Allow-Origin'] = '*'
50
+ resp.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
51
+ resp.headers['Access-Control-Allow-Headers'] = 'Content-Type'
52
+ return resp
53
  return middleware
54
 
55
  app = web.Application(middlewares=[cors_middleware])
 
57
  app.router.add_get('/signal', handle_get)
58
 
59
  if __name__ == '__main__':
60
+ print("Broker running at http://localhost:3000")
61
+ web.run_app(app, port=3000)