Saltar a contenido

Changelog

Todos los cambios notables de este proyecto serán documentados en este archivo.

El formato se basa en Keep a Changelog, y este proyecto adhiere a Semantic Versioning.

1.0.0 - 2025-10-12

✨ Agregado

  • Implementación completa de Socket.IO v4
  • Soporte completo del protocolo Socket.IO v4
  • Engine.IO v4 con HTTP long-polling y WebSocket transport
  • Handshake y negociación de protocolo

  • Namespaces

  • Multiplexación de conexiones con namespaces
  • Soporte para namespace por defecto (/) y personalizados
  • Eventos aislados por namespace

  • Event System

  • Emisión y recepción de eventos personalizados
  • Event handlers con argumentos variables
  • Soporte para eventos del ciclo de vida (connect, disconnect, error)

  • Acknowledgments

  • Request-response pattern con EmitWithAck()
  • Timeout configurable para acknowledgments
  • Soporte bidireccional (cliente→servidor, servidor→cliente)

  • Binary Events

  • Transmisión eficiente de datos binarios
  • EmitBinary() para envío de archivos, imágenes, etc.
  • Sin codificación Base64 (ahorro de ~33% ancho de banda)

  • Reconnection Automática

  • Reconexión automática con backoff exponencial
  • Configuración flexible (ReconnectAttempts, ReconnectDelay, ReconnectDelayMax)
  • Eventos de reconexión (attempt, success, error, failed)

  • Autenticación

  • Soporte de autenticación en handshake inicial
  • Headers HTTP personalizados
  • Compatible con JWT y otros tokens

  • Thread-Safety

  • Uso de sync.Map para handlers y namespaces
  • atomic.Value para estado de conexión
  • RWMutex para acceso concurrente seguro
  • Zero data races (validado con Go Race Detector)

  • Configuración Flexible

  • Struct Options con todas las configuraciones
  • Valores por defecto razonables
  • Timeouts configurables

  • Testing

  • Suite completa de tests unitarios
  • Test runner personalizado (cmd/testrunner/)
  • Soporte para tests: unit, integration, compliance, stress

  • Documentación

  • Documentación completa en español
  • Guías de inicio rápido
  • API Reference completa
  • Patrones de uso avanzado
  • Ejemplos funcionales

  • Ejemplos

  • Basic: Conexión simple
  • Authentication: JWT y autenticación
  • Binary: Transferencia de archivos
  • Chat: Aplicación de chat en tiempo real
  • Namespaces: Múltiples namespaces
  • Acknowledgments: Request-response
  • Reconnection: Manejo de reconexión
  • Rooms: Salas y broadcasting

🔒 Seguridad

  • Validación de URLs (prevención de inyección)
  • Manejo seguro de conexiones WebSocket
  • Timeout para prevenir conexiones colgadas

📊 Rendimiento

  • 10,000+ eventos concurrentes por segundo
  • Eficiencia de memoria con pool de buffers
  • Parsing optimizado de paquetes Engine.IO
  • Backoff exponencial para reconexión inteligente

🐛 Corregido

  • N/A (primera versión estable)

📝 Documentación

  • README completo con ejemplos
  • Documentación técnica en carpeta docs/
  • Ejemplos ejecutables en carpeta examples/
  • Comentarios GoDoc en todo el código público

🧪 Testing

  • Cobertura de código > 80%
  • Tests con Go Race Detector
  • CI/CD con GitHub Actions
  • Tests en Go 1.20, 1.21, 1.22

Unreleased

🚧 En desarrollo

  • Soporte para múltiples transports simultáneos
  • Websocket ping/pong customizable
  • Métricas y observabilidad integrada
  • Soporte para compresión de mensajes

Convenciones

Tipos de Cambios

  • ✨ Agregado - Nuevas funcionalidades
  • 🔄 Cambiado - Cambios en funcionalidades existentes
  • ⚠️ Deprecado - Funcionalidades que serán removidas
  • 🗑️ Removido - Funcionalidades eliminadas
  • 🐛 Corregido - Bug fixes
  • 🔒 Seguridad - Correcciones de seguridad