Skip to content

Referencia de Eventos Socket

La comunicación en tiempo real usa Socket.IO. Todos los eventos requieren autenticación.

Conexión

typescript
import { io } from 'socket.io-client';

const socket = io('http://localhost:3000', {
  auth: { token: 'tu-token-jwt' }
});

Eventos de Control del Servidor

command

Envía un comando a la consola del servidor.

Emit:

typescript
socket.emit('command', '/help');

Response: command-result

typescript
socket.on('command-result', (result) => {
  // { cmd: '/help', success: true }
});

start

Iniciar el contenedor del servidor.

Emit:

typescript
socket.emit('start');

Response: action-status

typescript
socket.on('action-status', (result) => {
  // { action: 'start', success: true }
});

stop

Detener el contenedor del servidor.

Emit:

typescript
socket.emit('stop');

Response: action-status

restart

Reiniciar el contenedor del servidor.

Emit:

typescript
socket.emit('restart');

Response: action-status

download

Iniciar descarga de archivos del servidor (solo x64).

Emit:

typescript
socket.emit('download');

Response: Múltiples eventos download-progress, luego download-complete

wipe

Eliminar todos los datos del servidor.

Emit:

typescript
socket.emit('wipe');

Response: action-status

Eventos de Logs

logs:more

Solicitar historial de logs adicional.

Emit:

typescript
socket.emit('logs:more', {
  currentCount: 100,
  batchSize: 200
});

Response: logs:history

typescript
socket.on('logs:history', (data) => {
  // { logs: string[], initial: false, hasMore: true }
});

log (recibir)

Streaming de logs en tiempo real.

typescript
socket.on('log', (line: string) => {
  console.log('Nuevo log:', line);
});

Eventos de Archivos

files:list

Listar contenido de directorio.

Emit:

typescript
socket.emit('files:list', '/mods');

Response: files:list-result

files:read

Leer contenido de archivo.

Emit:

typescript
socket.emit('files:read', '/config.json');

Response: files:read-result

files:save

Guardar contenido de archivo.

Emit:

typescript
socket.emit('files:save', {
  path: '/config.json',
  content: '{"key": "value"}',
  createBackup: true
});

Response: files:save-result

files:mkdir

Crear un directorio.

Emit:

typescript
socket.emit('files:mkdir', '/mods/custom');

Response: files:mkdir-result

files:delete

Eliminar archivo o directorio.

Emit:

typescript
socket.emit('files:delete', '/mods/old-mod.jar');

Response: files:delete-result

files:rename

Renombrar archivo o directorio.

Emit:

typescript
socket.emit('files:rename', {
  oldPath: '/mods/mod.jar',
  newPath: '/mods/mod-renamed.jar'
});

Response: files:rename-result

Eventos de Mods

mods:list

Listar mods instalados.

Emit:

typescript
socket.emit('mods:list');

Response: mods:list-result

Buscar mods en Modtale.

Emit:

typescript
socket.emit('mods:search', {
  query: 'ejemplo',
  classification: 'MOD',
  page: 1,
  pageSize: 20
});

Response: mods:search-result

mods:install

Instalar un mod desde Modtale.

Emit:

typescript
socket.emit('mods:install', {
  projectId: 'project-id',
  versionId: 'version-id',
  metadata: {
    versionName: '1.0.0',
    projectTitle: 'Mod Ejemplo',
    classification: 'MOD'
  }
});

Response: mods:install-status (progreso), luego mods:install-result

mods:uninstall

Desinstalar un mod.

Emit:

typescript
socket.emit('mods:uninstall', 'mod-id');

Response: mods:uninstall-result

mods:enable / mods:disable

Habilitar o deshabilitar un mod.

Emit:

typescript
socket.emit('mods:enable', 'mod-id');
socket.emit('mods:disable', 'mod-id');

Response: mods:enable-result / mods:disable-result

mods:check-updates

Verificar actualizaciones de mods.

Emit:

typescript
socket.emit('mods:check-updates');

Response: mods:check-updates-result

Eventos de Estado

status (recibir)

Actualizaciones de estado del servidor (enviadas cada 5 segundos).

typescript
socket.on('status', (status) => {
  // { running: true, uptime: 3600, ... }
});

Formato de Respuesta

Todas las respuestas de eventos siguen este patrón:

typescript
interface EventResult {
  success: boolean;
  error?: string;
  // ... datos adicionales
}

Not affiliated with Hypixel Studios or Hytale.