Add SessionInfoFloat component to SessionPage and enhance session management in server
- Introduced SessionInfoFloat component to display session details when a session is active. - Updated session server logic to automatically transition sessions to "ending" status when their end time is reached. - Improved process termination handling with enhanced error checking and fallback mechanisms. - Refactored application stop logic to handle multiple processes more efficiently and added timeout management for process termination.
This commit is contained in:
@@ -92,7 +92,12 @@ Session Server автоматически управляет игровыми с
|
||||
### Как это работает
|
||||
|
||||
1. **Проверка сессий**: Каждую секунду (или согласно `SESSION_CHECK_INTERVAL_MS`) сервер запрашивает у основного API список сессий для этого сервера
|
||||
2. **Запуск приложений**: Для сессий со статусом `starting`:
|
||||
2. **Проверка времени окончания**: Для активных сессий (`started` или `starting`):
|
||||
- ⏰ Проверяется время `endAt` - если оно наступило, сессия автоматически переводится в статус `ending`
|
||||
- **Timezone**: Все время хранится в UTC, сравнение корректно работает независимо от часового пояса сервера
|
||||
- По умолчанию сессии создаются с временем окончания +30 минут от момента создания
|
||||
- Автоматическое завершение гарантирует, что сессии не будут работать бесконечно
|
||||
3. **Запуск приложений**: Для сессий со статусом `starting`:
|
||||
- ⏰ Проверяется время `startAt` - приложение запускается только если это время уже наступило
|
||||
- **Timezone**: Все время хранится в UTC, сравнение корректно работает независимо от часового пояса сервера
|
||||
- Запланированные сессии (с будущим `startAt`) логируются с информацией о времени до запуска
|
||||
@@ -104,13 +109,13 @@ Session Server автоматически управляет игровыми с
|
||||
- Запускается соответствующее приложение
|
||||
- Отслеживается PID процесса
|
||||
- Статус сессии обновляется на `started` на главном сервере
|
||||
3. **Остановка приложений**: Для сессий со статусом `ending`:
|
||||
4. **Остановка приложений**: Для сессий со статусом `ending`:
|
||||
- Используется `taskkill /pid {PID} /T /F` для завершения всего дерева процессов
|
||||
- `/T` - завершает указанный процесс и ВСЕ дочерние процессы
|
||||
- `/F` - принудительное завершение
|
||||
- Решает проблему с UE5 и другими приложениями, создающими дочерние процессы
|
||||
- Статус сессии обновляется на `ended` на главном сервере
|
||||
4. **Автоматическая очистка**: Процессы для неактивных сессий автоматически останавливаются
|
||||
5. **Автоматическая очистка**: Процессы для неактивных сессий автоматически останавливаются
|
||||
|
||||
### API endpoints для управления сессиями
|
||||
|
||||
@@ -182,6 +187,12 @@ C:\apps\
|
||||
[2025-10-06T10:02:01.100Z] ✅ Статус сессии 123e4567-e89b-12d3-a456-426614174000 обновлен на "started"
|
||||
```
|
||||
|
||||
Автоматическое завершение по истечении времени:
|
||||
```
|
||||
[2025-10-06T10:32:00.000Z] ⏰ Время сессии 123e4567-e89b-12d3-a456-426614174000 (minecraft) истекло, завершение...
|
||||
[2025-10-06T10:32:00.100Z] ✅ Статус сессии 123e4567-e89b-12d3-a456-426614174000 обновлен на "ending"
|
||||
```
|
||||
|
||||
Остановка сессии:
|
||||
```
|
||||
[2025-10-06T10:32:00.000Z] 🛑 Остановка приложения для сессии 123e4567-e89b-12d3-a456-426614174000 (PID: 12345)
|
||||
|
||||
Reference in New Issue
Block a user