Довідник Socket подій
Комунікація в реальному часі використовує Socket.IO. Всі події вимагають автентифікації.
З'єднання
import { io } from 'socket.io-client';
const socket = io('http://localhost:3000', {
auth: { token: 'ваш-jwt-токен' }
});Події керування сервером
command
Надіслати команду до консолі сервера.
Emit:
socket.emit('command', '/help');Response: command-result
socket.on('command-result', (result) => {
// { cmd: '/help', success: true }
});start
Запустити контейнер сервера.
Emit:
socket.emit('start');Response: action-status
socket.on('action-status', (result) => {
// { action: 'start', success: true }
});stop
Зупинити контейнер сервера.
Emit:
socket.emit('stop');Response: action-status
restart
Перезапустити контейнер сервера.
Emit:
socket.emit('restart');Response: action-status
download
Запустити завантаження файлів сервера (тільки x64).
Emit:
socket.emit('download');Response: Кілька подій download-progress, потім download-complete
wipe
Видалити всі дані сервера.
Emit:
socket.emit('wipe');Response: action-status
Події логів
logs:more
Запит додаткової історії логів.
Emit:
socket.emit('logs:more', {
currentCount: 100,
batchSize: 200
});Response: logs:history
socket.on('logs:history', (data) => {
// { logs: string[], initial: false, hasMore: true }
});log (отримання)
Стрімінг логів в реальному часі.
socket.on('log', (line: string) => {
console.log('Новий лог:', line);
});Події файлів
files:list
Список вмісту директорії.
Emit:
socket.emit('files:list', '/mods');Response: files:list-result
files:read
Читання вмісту файлу.
Emit:
socket.emit('files:read', '/config.json');Response: files:read-result
files:save
Збереження вмісту файлу.
Emit:
socket.emit('files:save', {
path: '/config.json',
content: '{"key": "value"}',
createBackup: true
});Response: files:save-result
files:mkdir
Створення директорії.
Emit:
socket.emit('files:mkdir', '/mods/custom');Response: files:mkdir-result
files:delete
Видалення файлу або директорії.
Emit:
socket.emit('files:delete', '/mods/old-mod.jar');Response: files:delete-result
files:rename
Перейменування файлу або директорії.
Emit:
socket.emit('files:rename', {
oldPath: '/mods/mod.jar',
newPath: '/mods/mod-renamed.jar'
});Response: files:rename-result
Події модів
mods:list
Список встановлених модів.
Emit:
socket.emit('mods:list');Response: mods:list-result
mods:search
Пошук модів в Modtale.
Emit:
socket.emit('mods:search', {
query: 'приклад',
classification: 'MOD',
page: 1,
pageSize: 20
});Response: mods:search-result
mods:install
Встановлення моду з Modtale.
Emit:
socket.emit('mods:install', {
projectId: 'project-id',
versionId: 'version-id',
metadata: {
versionName: '1.0.0',
projectTitle: 'Приклад Мод',
classification: 'MOD'
}
});Response: mods:install-status (прогрес), потім mods:install-result
mods:uninstall
Видалення моду.
Emit:
socket.emit('mods:uninstall', 'mod-id');Response: mods:uninstall-result
mods:enable / mods:disable
Увімкнення або вимкнення моду.
Emit:
socket.emit('mods:enable', 'mod-id');
socket.emit('mods:disable', 'mod-id');Response: mods:enable-result / mods:disable-result
mods:check-updates
Перевірка оновлень модів.
Emit:
socket.emit('mods:check-updates');Response: mods:check-updates-result
Події статусу
status (отримання)
Оновлення статусу сервера (надсилається кожні 5 секунд).
socket.on('status', (status) => {
// { running: true, uptime: 3600, ... }
});Формат відповіді
Всі відповіді подій слідують цьому патерну:
interface EventResult {
success: boolean;
error?: string;
// ... додаткові дані
}