Go Live Dashboard
-- - -
+ Go Live Dashboard +
++ + +
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faac56c..cc55e2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: # Define the Node.js versions to test against - node-version: [20, 22, 24] + node-version: [20] # Continue running other versions even if one fails fail-fast: false @@ -30,7 +30,14 @@ jobs: - name: Install Dependencies # Note: npm ci requires package-lock.json to be committed. # If package-lock.json is in .gitignore, change this to: npm install - run: npm ci + run: | + echo "Listing files in current directory:" + ls -la + echo "Node version:" + node -v + echo "NPM version:" + npm -v + npm ci - name: Lint & Format Check run: npm run lint:ci diff --git a/.gitignore b/.gitignore index b048c54..f432686 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,4 @@ tests/tmp/ .vscode/ .idea/ node_modules/ -dist -package-lock.json -/package-lock.json -package.json/ +dist \ No newline at end of file diff --git a/PULL_REQUEST.md b/PULL_REQUEST.md index f2ec7e8..fd96ace 100644 --- a/PULL_REQUEST.md +++ b/PULL_REQUEST.md @@ -1,37 +1,44 @@ # Pull Request: Add Go Live Feature (WebRTC Browser Streaming) ## Summary + This PR implements a "Go Live" feature that allows users to stream directly from their browser using WebRTC. No external software (like OBS) is required. ## Changes ### Backend (`server.js`) + - Added Socket.IO signaling server for WebRTC peer connection establishment - New endpoint `GET /api/live-streams` to list active streams - Room-based stream management with automatic cleanup on disconnect ### Frontend - Broadcaster (`go-live.html`, `src/js/go-live.js`) + - New "Go Live Dashboard" page accessible from navigation - "Share Screen" and "Use Camera" buttons for media capture - Real-time viewer count display - Comprehensive error handling for permission denials ### Frontend - Viewer (`src/js/main.js`) + - Updated stream detail modal to use WebRTC playback - Connects to signaling server and receives live video via peer connection - Shows stream status (connecting, live, ended, offline) ### Dependencies Added + - `socket.io` - Server-side real-time communication - `socket.io-client` - Client-side Socket.IO ### Security + - CORS restricted to localhost origins - Room-based isolation prevents cross-stream access - STUN-only ICE configuration (no TURN relay) - All connections go through signaling server (no direct IP exposure) ## Testing Instructions + 1. Start the server: `node server.js` 2. Start the frontend: `npm run dev` 3. Open `/go-live.html` in one browser tab @@ -40,6 +47,7 @@ This PR implements a "Go Live" feature that allows users to stream directly from 6. Verify video plays in the modal ## Files Changed + - `server.js` - Added Socket.IO signaling - `go-live.html` - New broadcaster dashboard - `src/js/go-live.js` - WebRTC broadcaster logic diff --git a/go-live.html b/go-live.html index 999e015..844b0df 100644 --- a/go-live.html +++ b/go-live.html @@ -1,116 +1,148 @@ - + - -
+