Каждый и его собака могут написать код сокет блокировки, но неблокирование значительно сложнее. Добавьте в него SSL, который даже на уровне протокола вносит сложности в неблокирующую обработку, и вы можете потерять удачу. Очевидно, что это может быть сделано в C с использованием прямых вызовов OpenSSL, но это становится сложным и похоже на изобретение колеса заново. Но языки и библиотеки более высокого уровня часто имеют неблокирующую и ненадежную поддержку.
Я уже пробовал следующее:
- рубин с килограммом. В него входило что-то CALLED kgio_monkey_ext, которое, по-видимому, исчезло из Интернета и никогда не было зарегистрировано. Это не сработало, просто блокировалось.
- Perl с AnyEvent и Net :: SSLeay. В основном работает, но иногда теряет сокет и иногда блокирует или, скорее, зависает. Кроме того, я нашел эту статью, в которой описаны некоторые проблемы с поддержкой Net :: SSLeay неблокирующих сокетов: http://devpit.org/wiki/OpenSSL_with_nonblocking_sockets_%28in_Perl%29, которые могут быть или не быть связаны.
Моя мотивация - написать своего рода прокси-сервер SSL, который принимает запросы от клиентов в форме по адресу и порту сервера, подключается к ним с помощью SSL / TLS и затем проксирует трафик между простым клиентом и сервером SSL, отвечая на запросы другие запросы параллельно.
Был бы какой-нибудь язык и / или библиотека, которая лучше подходит для такой задачи, чем с AnyEvent и Net :: SSLeay, с точки зрения лучшей надежности (не блокирование, не утечка памяти, не утечка сокетов), более ясная документация / примеры и сколько мне нужно в нем написать?
В качестве альтернативы, это уже где-то реализовано, в форме, которую я могу изменить, чтобы поддержать протокол запроса, который мне нужен?
Или мне лучше попробовать Perl?