Я пытаюсь добавить HTTP-сервер в существующее приложение Ruby. Приложение основано на цикле select
, и я хочу обрабатывать входящие HTTP-запросы и там (важно обрабатывать запросы в одном потоке, иначе мне придется прыгать через обручи, чтобы маршалировать их там).
У Ruby есть множество решений для автономных HTTP-серверов, но я не могу найти библиотеку, которая реализует HTTP-сервер на существующем сокете. Я не хочу, чтобы библиотека HTTP открывала порт и ждала, я хочу кормить его сокетами.
Основная логика, которую я ищу, такова:
handler = SomeHTTPParsingLibrary.new
# set up handler callbacks, etc on handler...
while socket = get_incoming_connection()
handler.handle_request(socket)
end
Существуют ли существующие библиотеки Ruby, которые могут работать так? HTTP — достаточно простой протокол, но в нем достаточно раздражающих деталей (мне нужны файлы cookie, базовая аутентификация и т. д.), которые я бы предпочел не создавать самостоятельно.