Socket.IO es una biblioteca para la comunicación en tiempo real, bidireccional y de baja latencia, basada en eventos entre clientes y servidores.
apple/swift-nio
Framework de networking multiplataforma, no bloqueante y orientado a eventos, escrito en Swift para crear servidores y clientes de protocolos de alto rendimiento, similar a Netty.
- Estrellas
- 8,538
- Forks
- 816
- Issues abiertos
- 307
- Último commit
- hace 3 días
¿Qué es?
SwiftNIO es un framework de networking de bajo nivel para Swift que utiliza I/O no bloqueante y event loops para crear servidores y clientes de protocolos. En lugar de asignar un hilo a cada conexión, multiplexa muchas conexiones en un número reducido de event loops, lo que resulta adecuado para servidores que mantienen grandes cantidades de conexiones relativamente inactivas. Se describe como la alternativa de Swift a Netty.
El framework ofrece los componentes básicos: EventLoopGroup y EventLoop para distribuir operaciones de I/O; Channel y ChannelPipeline, junto con ChannelHandlers, para procesar datos; ByteBuffer para manejar bytes; y futures y promises para obtener resultados asíncronos. Incluye módulos para I/O de POSIX (NIOPosix), utilidades de testing (NIOEmbedded, NIOTestUtils) e implementaciones de bajo nivel de los protocolos HTTP/1.1 y WebSocket. TLS, HTTP/2, SSH y otros protocolos se encuentran en repositorios complementarios.
SwiftNIO está dirigido a quienes desarrollan frameworks y a equipos que necesitan un control preciso del rendimiento de networking, no al desarrollo web para usuarios finales. Bibliotecas de más alto nivel, como AsyncHTTPClient, gRPC Swift y PostgresNIO, están construidas sobre él.
Funciones clave
- 01I/O no bloqueante basado en event loops, con kqueue o epoll según la plataforma.
- 02Modelo de Channel y ChannelPipeline para combinar handlers de protocolos reutilizables.
- 03Implementaciones de bajo nivel de los protocolos HTTP/1.1 y WebSocket.
- 04ByteBuffer para manejar bytes de forma eficiente mediante copy-on-write.
- 05EmbeddedChannel y EmbeddedEventLoop para probar código de protocolos sin usar networking real.
- 06Compatible con macOS y Linux, con soporte experimental para OpenBSD.
Casos de uso
- Crear un servidor o cliente de protocolos personalizado en Swift que deba gestionar muchas conexiones simultáneas.
- Desarrollar una biblioteca de networking o un framework web de más alto nivel en Swift sobre un núcleo no bloqueante.
- Crear servicios sensibles al rendimiento en los que los modelos con un hilo por conexión resulten demasiado costosos.
- Probar handlers de protocolos de forma aislada mediante el canal integrado.
Inicio rápido
- 1
Añade SwiftNIO a las dependencias de Package.swift con un rango de versiones como from: "2.0.0"
- 2
Añade el producto NIO al target e importa NIO en tu código Swift
Antes de usarlo
- Es un kit de herramientas de red de bajo nivel, no un framework web de alto nivel, por lo que requiere un buen conocimiento de su modelo de event loop y canales.
- Las versiones recientes requieren una cadena de herramientas de Swift más nueva; por ejemplo, la versión 2.98.0 y posteriores requieren Swift 6.1.
- SwiftNIO 1 ha llegado al fin de su vida útil y no recibe nuevas funciones.
Temas
Preguntas frecuentes
- ¿Qué es swift-nio?
- Framework de networking multiplataforma, no bloqueante y orientado a eventos, escrito en Swift para crear servidores y clientes de protocolos de alto rendimiento, similar a Netty. SwiftNIO es un framework de networking de bajo nivel para Swift que utiliza I/O no bloqueante y event loops para crear servidores y clientes de protocolos. En lugar de asignar un hilo a cada conexión, multiplexa muchas conexiones en un número reducido de event loops, lo que resulta adecuado para servidores que mantienen grandes cantidades de conexiones relativamente inactivas. Se describe como la alternativa de Swift a Netty.
- ¿swift-nio es gratuito? ¿Qué licencia tiene?
- swift-nio es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿swift-nio sigue mantenido?
- Mantenimiento activo. El último commit de swift-nio fue el 19 oct 2026.
- ¿Para qué puedo usar swift-nio?
- Crear un servidor o cliente de protocolos personalizado en Swift que deba gestionar muchas conexiones simultáneas. Desarrollar una biblioteca de networking o un framework web de más alto nivel en Swift sobre un núcleo no bloqueante. Crear servicios sensibles al rendimiento en los que los modelos con un hilo por conexión resulten demasiado costosos. Probar handlers de protocolos de forma aislada mediante el canal integrado.
- ¿Cómo se instala swift-nio?
- Añade SwiftNIO a las dependencias de Package.swift con un rango de versiones como from: "2.0.0" Añade el producto NIO al target e importa NIO en tu código Swift
- ¿Dónde consigo swift-nio?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/apple/swift-nio
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Cliente HTTP para JVM, Android y GraalVM que reutiliza conexiones, admite HTTP/2 y almacena respuestas en caché de forma predeterminada.
Elegante biblioteca de networking HTTP para Swift, basada en URLSession, con solicitudes encadenables, codificación, cargas, descargas y validación de respuestas.
Un framework web minimalista y de alto rendimiento para Go, basado en el paquete estándar net/http.
Microframework de C++ rápido y al estilo de Flask para crear servicios web HTTP y WebSocket; solo requiere archivos de cabecera y es fácil de usar.
Herramienta de línea de comandos y biblioteca para transferir datos hacia o desde servidores mediante URL, compatible con HTTP, FTP, SFTP, SMTP y muchos otros protocolos.