Socket.IO — библиотека для двустороннего обмена событиями с низкой задержкой в реальном времени между клиентами и серверами.
apple/swift-nio
Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.
- Звёзды
- 8,538
- Форки
- 816
- Открытые issues
- 307
- Последний коммит
- 3 дня назад
Что это?
SwiftNIO — низкоуровневый сетевой фреймворк для Swift, использующий неблокирующий ввод-вывод и циклы событий для создания серверов и клиентов протоколов. Вместо выделения отдельного потока для каждого соединения он распределяет множество соединений между небольшим числом циклов событий. Такой подход подходит для серверов, поддерживающих большое количество сравнительно неактивных соединений. SwiftNIO называют аналогом Netty для Swift.
Фреймворк предоставляет основные строительные блоки: EventLoopGroup и EventLoop для распределения операций ввода-вывода, Channel и ChannelPipeline с ChannelHandlers для обработки данных, ByteBuffer для работы с байтами, а также futures и promises для асинхронных результатов. В состав входят модули для POSIX-ввода-вывода (NIOPosix), вспомогательные средства тестирования (NIOEmbedded, NIOTestUtils) и низкоуровневые реализации протоколов HTTP/1.1 и WebSocket. TLS, HTTP/2, SSH и другие протоколы находятся в сопутствующих репозиториях.
SwiftNIO предназначен для авторов фреймворков и команд, которым нужен точный контроль над производительностью сетевого взаимодействия, а не для разработки пользовательских веб-приложений. На его основе построены библиотеки более высокого уровня, такие как AsyncHTTPClient, gRPC Swift и PostgresNIO.
Ключевые возможности
- 01Неблокирующий ввод-вывод на основе циклов событий с использованием kqueue или epoll в зависимости от платформы.
- 02Модель Channel и ChannelPipeline для объединения повторно используемых обработчиков протоколов.
- 03Низкоуровневые реализации протоколов HTTP/1.1 и WebSocket.
- 04ByteBuffer для эффективной работы с байтами с копированием при записи.
- 05EmbeddedChannel и EmbeddedEventLoop для тестирования кода протоколов без реального сетевого взаимодействия.
- 06Поддержка macOS и Linux, а также экспериментальная поддержка OpenBSD.
Сценарии использования
- Создание собственного сервера или клиента протокола на Swift, которому нужно обрабатывать множество одновременных соединений.
- Разработка сетевой библиотеки или веб-фреймворка более высокого уровня на основе неблокирующего ядра.
- Создание сервисов с высокими требованиями к производительности, для которых модель с отдельным потоком на каждое соединение слишком затратна.
- Модульное тестирование обработчиков протоколов по отдельности с помощью встроенного канала.
Быстрый старт
- 1
Добавьте SwiftNIO в зависимости Package.swift, указав диапазон версий, например from: "2.0.0"
- 2
Добавьте продукт NIO в цель и импортируйте NIO в код Swift
Что важно знать
- Это низкоуровневый набор сетевых инструментов, а не высокоуровневый веб-фреймворк, поэтому для работы с ним нужно хорошо понимать модель event loop и каналов.
- Для последних выпусков требуется более новая версия toolchain Swift. Например, для версии 2.98.0 и новее нужен Swift 6.1.
- Поддержка SwiftNIO 1 завершена, новые функции для него не выпускаются.
Темы
Частые вопросы
- Что такое swift-nio?
- Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty. SwiftNIO — низкоуровневый сетевой фреймворк для Swift, использующий неблокирующий ввод-вывод и циклы событий для создания серверов и клиентов протоколов. Вместо выделения отдельного потока для каждого соединения он распределяет множество соединений между небольшим числом циклов событий. Такой подход подходит для серверов, поддерживающих большое количество сравнительно неактивных соединений. SwiftNIO называют аналогом Netty для Swift.
- swift-nio можно использовать бесплатно? Какая у него лицензия?
- swift-nio распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- swift-nio всё ещё поддерживается?
- Активно поддерживается. Последний коммит в swift-nio — 19 окт. 2026 г..
- Для чего можно использовать swift-nio?
- Создание собственного сервера или клиента протокола на Swift, которому нужно обрабатывать множество одновременных соединений. Разработка сетевой библиотеки или веб-фреймворка более высокого уровня на основе неблокирующего ядра. Создание сервисов с высокими требованиями к производительности, для которых модель с отдельным потоком на каждое соединение слишком затратна. Модульное тестирование обработчиков протоколов по отдельности с помощью встроенного канала.
- Как установить swift-nio?
- Добавьте SwiftNIO в зависимости Package.swift, указав диапазон версий, например from: "2.0.0" Добавьте продукт NIO в цель и импортируйте NIO в код Swift
- Где скачать swift-nio?
- Исходный код и инструкции по установке — на GitHub: https://github.com/apple/swift-nio
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
HTTP-клиент для JVM, Android и GraalVM с повторным использованием соединений, поддержкой HTTP/2 и кэшированием ответов по умолчанию.
Удобная HTTP-библиотека для Swift на основе URLSession: цепочки запросов, кодирование данных, загрузка файлов и проверка ответов.
Высокопроизводительный минималистичный веб-фреймворк для Go на базе стандартного пакета net/http.
Быстрый микрофреймворк на C++ в стиле Flask для создания HTTP- и WebSocket-сервисов: header-only и простой в использовании.
Консольная утилита и библиотека для передачи данных на серверы и с серверов по URL с поддержкой HTTP, FTP, SFTP, SMTP и многих других протоколов.