Socket.IO é uma biblioteca para comunicação em tempo real, bidirecional, de baixa latência e baseada em eventos entre clientes e servidores.
apple/swift-nio
Framework de rede multiplataforma e não bloqueante, baseado em eventos e escrito em Swift, para criar servidores e clientes de protocolos de alto desempenho, semelhante ao Netty.
- Estrelas
- 8,538
- Forks
- 816
- Issues abertas
- 307
- Último commit
- há 3 dias
O que é?
O SwiftNIO é um framework de rede de baixo nível para Swift que usa I/O não bloqueante e event loops para criar servidores e clientes de protocolos. Em vez de dedicar uma thread a cada conexão, ele multiplexa muitas conexões em um pequeno número de event loops, o que é adequado para servidores que mantêm um grande número de conexões relativamente ociosas. É descrito como a contraparte do Netty em Swift.
O framework oferece os componentes básicos: EventLoopGroup e EventLoop para despachar I/O, Channel e ChannelPipeline com ChannelHandlers para processar dados, ByteBuffer para manipular bytes e futures e promises para resultados assíncronos. Os módulos abrangem I/O POSIX (NIOPosix), ferramentas auxiliares para testes (NIOEmbedded, NIOTestUtils) e implementações de baixo nível dos protocolos HTTP/1.1 e WebSocket. TLS, HTTP/2, SSH e outros protocolos ficam em repositórios complementares.
O SwiftNIO é voltado a quem desenvolve frameworks e a equipes que precisam de controle preciso sobre o desempenho de rede, e não ao desenvolvimento web para usuários finais. Bibliotecas de nível mais alto, como AsyncHTTPClient, gRPC Swift e PostgresNIO, são construídas sobre ele.
Recursos principais
- 01I/O não bloqueante baseado em event loops, usando kqueue ou epoll conforme a plataforma.
- 02Modelo de Channel e ChannelPipeline para compor handlers de protocolo reutilizáveis.
- 03Implementações de baixo nível dos protocolos HTTP/1.1 e WebSocket.
- 04ByteBuffer para manipulação eficiente de bytes com copy-on-write.
- 05EmbeddedChannel e EmbeddedEventLoop para testar código de protocolo sem usar uma rede real.
- 06Compatível com macOS e Linux, com suporte experimental a OpenBSD.
Casos de uso
- Criar um servidor ou cliente de protocolo personalizado em Swift que precise lidar com muitas conexões simultâneas.
- Desenvolver uma biblioteca de rede ou um framework web de nível mais alto sobre um núcleo não bloqueante.
- Escrever serviços sensíveis ao desempenho, nos quais o modelo de uma thread por conexão é caro demais.
- Testar handlers de protocolo isoladamente usando o canal incorporado.
Início rápido
- 1
Adicione SwiftNIO às dependências do Package.swift usando um intervalo de versões como from: "2.0.0"
- 2
Adicione o produto NIO ao target e importe NIO no seu código Swift
Antes de usar
- É um kit de ferramentas de rede de baixo nível, não um framework web de alto nível, portanto exige um bom entendimento do modelo de event loop e canais.
- As versões recentes exigem uma toolchain Swift mais nova; por exemplo, a versão 2.98.0 e posteriores exigem Swift 6.1.
- O SwiftNIO 1 chegou ao fim da vida útil e não recebe novos recursos.
Tópicos
Perguntas frequentes
- O que é swift-nio?
- Framework de rede multiplataforma e não bloqueante, baseado em eventos e escrito em Swift, para criar servidores e clientes de protocolos de alto desempenho, semelhante ao Netty. O SwiftNIO é um framework de rede de baixo nível para Swift que usa I/O não bloqueante e event loops para criar servidores e clientes de protocolos. Em vez de dedicar uma thread a cada conexão, ele multiplexa muitas conexões em um pequeno número de event loops, o que é adequado para servidores que mantêm um grande número de conexões relativamente ociosas. É descrito como a contraparte do Netty em Swift.
- swift-nio é gratuito? Qual é a licença?
- swift-nio é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- swift-nio ainda é mantido?
- Manutenção ativa. O último commit de swift-nio foi em 19 de out. de 2026.
- Para que posso usar swift-nio?
- Criar um servidor ou cliente de protocolo personalizado em Swift que precise lidar com muitas conexões simultâneas. Desenvolver uma biblioteca de rede ou um framework web de nível mais alto sobre um núcleo não bloqueante. Escrever serviços sensíveis ao desempenho, nos quais o modelo de uma thread por conexão é caro demais. Testar handlers de protocolo isoladamente usando o canal incorporado.
- Como instalar swift-nio?
- Adicione SwiftNIO às dependências do Package.swift usando um intervalo de versões como from: "2.0.0" Adicione o produto NIO ao target e importe NIO no seu código Swift
- Onde consigo swift-nio?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/apple/swift-nio
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Cliente HTTP para JVM, Android e GraalVM que reutiliza conexões, oferece suporte a HTTP/2 e armazena respostas em cache por padrão.
Biblioteca elegante de networking HTTP para Swift, baseada em URLSession, com requisições encadeáveis, codificação, uploads, downloads e validação de respostas.
Um framework web minimalista e de alto desempenho para Go, baseado no pacote padrão net/http.
Um microframework C++ rápido, no estilo do Flask, para criar serviços web HTTP e WebSocket, distribuído como header-only e fácil de usar.
Ferramenta de linha de comando e biblioteca para transferir dados de e para servidores usando URLs, com suporte a HTTP, FTP, SFTP, SMTP e muitos outros protocolos.