Изучив несколько доступных библиотек http-сервера, я еще не нашел того, что искал, и уверен, что не могу быть первым, кто предъявляет этот набор требований.
Мне нужна библиотека, которая представляет API, который является «конвейерным». Конвейерная передача используется для описания функции HTTP, при которой несколько запросов HTTP могут отправляться по каналу TCP одновременно, не ожидая ответа. Мне нужна похожая функция в библиотечном API, где мое приложение может получать все эти запросы без необходимости отправки ответа (я отвечу, но хочу иметь возможность обрабатывать несколько запросов одновременно, чтобы уменьшить влияние внутренней задержки).
Таким образом, библиотека веб-сервера должна будет поддерживать следующий поток
1) HTTP-клиент передает http-запрос 1
2) HTTP-клиент передает http-запрос 2 ...
3) Библиотека веб-сервера получает запрос 1 и передает его в приложение «Мой веб-сервер»
4) Приложение My Web Server получает запрос 1 и отправляет его в «Моя система»
5) Веб-сервер получает запрос 2 и передает его в приложение «Мой веб-сервер»
6) Приложение My Web Server получает запрос 2 и отправляет его в «Моя система»
7) Приложение My Web Server получает ответ на запрос 1 от My System и передает его на веб-сервер
8) Веб-сервер передает HTTP-ответ 1 клиенту HTTP
9) Приложение My Web Server получает ответ на запрос 2 от My System и
передает его на веб-сервер
10) Веб-сервер передает HTTP-ответ 2 клиенту HTTP
Надеюсь, это иллюстрирует мое требование. Есть
две ключевые точки для распознавания. Ответы на библиотеку веб-сервера:
асинхронный и может быть несколько HTTP-запросов, переданных в My Web
Серверное приложение с выдающимися ответами.
Дополнительные требования
- Встраиваемый в существующее приложение 'C'
- Маленький след; Мне не нужны все функции, доступные в Apache и т. Д.
- Эффективное; нужно будет поддерживать тысячи запросов в секунду
- Разрешает асинхронные ответы на запросы; это небольшая задержка ответов, и, учитывая требуемую пропускную способность запросов, синхронная архитектура не будет работать для меня.
- Поддержка постоянных TCP-соединений
- Поддержка использования с соединениями Server-Push Comet
- Open Source / GPL
- поддержка HTTPS
- Портативный через Linux, Windows; желательно больше.
Буду очень признателен за любую рекомендацию
С наилучшими пожеланиями