Re: Генерация ответа для клиента и асинхронные сокеты
Maxim Dounin
mdounin at mdounin.ru
Mon Sep 23 15:22:28 UTC 2013
Hello!
On Mon, Sep 23, 2013 at 02:49:24AM -0400, Aleus Essentia wrote:
> Добрый день!
>
> Мой модуль работает по следующему алгоритму:
> 1) Получает заголовок от клиента;
> 2) Записывает по специальному формату заголовок в сокет другого сервера;
> 3) Закрывает на запись сокет;
> 4) Читает ответ: заголовок и html-страницу из этого же сокета;
> 5) Отдаёт полученный заголовок и html клиенту.
>
> Всё бы было хорошо, но работать с сокетами нужно асинхронно, а сейчас чтение
> и запись происходит блокирующим способом.
> Подскажите, следуя каким принципам, я должен составить код для асинхронного
> получения заголовка и html из сокета?
>
> Прочитал про регистрацию событий в этой статье:
> http://green-shaman.livejournal.com/32600.html. Но там не написано, где я
> должен вызывать функцию регистрации событий и где могу разместить код,
> отрабатывающий после прочтения всего ответа из сокета?
Я бы рекомендовал для начала ознакомится с кодом самого nginx'а.
В частности - с кодом модуля upstream использующих его модулей
(memcached, proxy).
Ну и Evan'а Miller'а почитать, если ещё не (а судя по вопросам -
таки не). Ссылки есть тут:
http://nginx.org/en/links.html
Там не всё соответствует текущему положению вещей в плане деталей,
местами API поменялось, но вы, по крайней мере, начнёте понимать,
о чём идёт речь.
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru