feat(streaming): add Screen Streaming plugin with WebRTC

New plugin: browser-based screen sharing via Chrome Screen Capture API.
Multi-stream grid layout (Rustdesk-style tiles) with live previews.

- Server: WebSocket signaling at /ws/streaming (SDP/ICE relay)
- Server: http.createServer for WebSocket attachment
- Frontend: StreamingTab with broadcaster/viewer modes
- Frontend: tile grid, fullscreen viewer, LIVE badges
- Supports multiple concurrent streams
- Peer-to-peer video via WebRTC (no video through server)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Daniel 2026-03-07 00:39:49 +01:00
parent 9ff8a38547
commit 29bcf67121
5 changed files with 1094 additions and 2 deletions

View file

@ -2,6 +2,7 @@ import { useState, useEffect, useRef } from 'react';
import RadioTab from './plugins/radio/RadioTab';
import SoundboardTab from './plugins/soundboard/SoundboardTab';
import LolstatsTab from './plugins/lolstats/LolstatsTab';
import StreamingTab from './plugins/streaming/StreamingTab';
interface PluginInfo {
name: string;
@ -14,6 +15,7 @@ const tabComponents: Record<string, React.FC<{ data: any }>> = {
radio: RadioTab,
soundboard: SoundboardTab,
lolstats: LolstatsTab,
streaming: StreamingTab,
};
export function registerTab(pluginName: string, component: React.FC<{ data: any }>) {
@ -85,6 +87,7 @@ export default function App() {
events: '\u{1F4C5}',
games: '\u{1F3B2}',
gamevote: '\u{1F3AE}',
streaming: '\u{1F4FA}',
};
return (