Repolode
apple

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. 1

    Añade SwiftNIO a las dependencias de Package.swift con un rango de versiones como from: "2.0.0"

  2. 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