diff --git a/client/.env b/client/.env index cd41370..b8dedb4 100644 --- a/client/.env +++ b/client/.env @@ -1 +1 @@ -VITE_API_URL=http://localhost:3000 \ No newline at end of file +VITE_API_URL=http://192.168.1.23:3000 \ No newline at end of file diff --git a/client/src/pages/SessionPage.tsx b/client/src/pages/SessionPage.tsx index 31710b8..915ada9 100644 --- a/client/src/pages/SessionPage.tsx +++ b/client/src/pages/SessionPage.tsx @@ -150,21 +150,24 @@ function SessionPage() { {/* Pixel Streaming Player - показывается когда сессия запущена */} - {session.status === "started" && session.playerPort && ( -
- setIsVideoInitialized(true)} - /> -
- )} + {session.status === "started" && + session.mode === "stream" && + session.server?.localIp && + session.playerPort && ( +
+ setIsVideoInitialized(true)} + /> +
+ )} {/* Основная карточка с информацией */}
diff --git a/client/src/pages/TestPage.tsx b/client/src/pages/TestPage.tsx index 2c7d5a6..d8f7c01 100644 --- a/client/src/pages/TestPage.tsx +++ b/client/src/pages/TestPage.tsx @@ -32,7 +32,7 @@ function TestPage() { const response = await api .post("sessions", { json: { - appId: "c1a06420-ca72-4a89-893e-3fe669bbbb99", + appId: "2914d736-b928-461c-b58f-e5d35d8b605d", mode: "stream", tier: "demo", }, diff --git a/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json b/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json deleted file mode 100644 index a79fc95..0000000 --- a/session-server/logs/.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 14 - }, - "auditLog": "logs\\.6c25b665cc60dab90c3b387b2a7b4da90595b19b-audit.json", - "files": [ - { - "date": 1760357222809, - "name": "logs\\server-2025-10-13.log", - "hash": "d8c9aa8fe14287c28a5e6d97abfc99880c7be890d8f58eb2229e747850d1ac12" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/session-server/src/index.ts b/session-server/src/index.ts index 963a760..3b0c3c9 100644 --- a/session-server/src/index.ts +++ b/session-server/src/index.ts @@ -481,7 +481,7 @@ async function startApplication(session: SessionData): Promise { streamerPort = await findFreePort(8080, 9000); playerPort = await findFreePort(Math.min(streamerPort + 1, 9000), 9000); sfuPort = await findFreePort(Math.min(playerPort + 1, 9000), 9000); - + console.log( `[${new Date().toISOString()}] 🔌 Найдены свободные порты - Streamer: ${streamerPort}, Player: ${playerPort}, SFU: ${sfuPort}` ); @@ -514,8 +514,6 @@ async function startApplication(session: SessionData): Promise { playerPort.toString(), "--sfu_port", sfuPort.toString(), - "--max_players", - "0", ], { detached: false, @@ -554,7 +552,6 @@ async function startApplication(session: SessionData): Promise { }); } - // Обработка завершения Cirrus процесса cirrusProcess.on("exit", async (code, signal) => { console.log( @@ -585,12 +582,18 @@ async function startApplication(session: SessionData): Promise { appProcess = spawn( appPath, [ - `-PixelStreamingURL=ws://127.0.0.1:${streamerPort}`, + "-PixelStreamingIP=127.0.0.1", + `-PixelStreamingPort=${streamerPort}`, "-ForceRes", "-ResX=1920", "-ResY=1080", "-Unattended", "-RenderOffScreen", + "-PixelStreamingWebRTCMinBitrate=5000000", + "-PixelStreamingWebRTCMaxBitrate=20000000", + "-PixelStreamingH264Profile=HIGH", + "-PixelStreamingWebRTCDisableReceiveAudio=true", + "-PixelStreamingEncoderRateControl=VBR", ], { detached: false, @@ -604,22 +607,12 @@ async function startApplication(session: SessionData): Promise { ); } else { // Local-режим: запускаем без Pixel Streaming - appProcess = spawn( - appPath, - [ - "-ForceRes", - "-ResX=1920", - "-ResY=1080", - "-Unattended", - "-RenderOffScreen", - ], - { - detached: false, - stdio: ["ignore", "ignore", "pipe"], - windowsHide: true, - cwd: `C:\\apps\\${app.name}`, - } - ); + appProcess = spawn(appPath, [], { + detached: false, + stdio: ["ignore", "ignore", "pipe"], + windowsHide: true, + cwd: `C:\\apps\\${app.name}`, + }); console.log( `[${new Date().toISOString()}] 💻 Local-режим: приложение запускается без Pixel Streaming` ); @@ -699,7 +692,13 @@ async function startApplication(session: SessionData): Promise { // Обновить статус на "started" с PID приложения // Для stream-режима также сохраняем Cirrus PID и порты - if (mode === "stream" && cirrusPid && streamerPort && playerPort && sfuPort) { + if ( + mode === "stream" && + cirrusPid && + streamerPort && + playerPort && + sfuPort + ) { await updateSessionStatus( sessionId, "started",