Вероятно nginx может слушать какой-то ещё хост/ip/порт и принимать
на него все запросы, которые приходят от постящих в чат месаги,
затем прокидывать их на бэкенд, который будет что-то отвечать. Но
этот ответ бэкенда улетит в другой блок server{...}, в котором висит
куча юзеров, "медленно качающих" не кончающуюся страничку. Т.е.
приходит запрос к одному server{}, а отдаётся через другой.
Тут же основной вопрос - что делать со свежими юзерами. Просто
буферизовать
последние N килобайт и отдавать подключенному это ? Мне кажется, что
"просто" не получится, а придется в поток вставлять какие-то метки
и уметь на стороне nginx на основании этих меток сформировать
правильный
ответ.
"Просто", безусловно не получится (с учётом приватных сообщений и пр.), но
зачем вообще с этим заморачиваться на уровне nginx-а? Есть бэкенд, который
всегда может выбрать N последних сообщений для данного юзера, и выдать их
в ответ на подсоединение. А дальше это соединение остаётся висеть, и обслуживается
на общих основаниях.
Т.е. сама идея мультиплексора, от backend один поток, а к юзерам -
много, мне кажется неплохой, но что с ней делать в "общем виде" - не
понимаю.
Алексей Тутубалин
mailto: lexa@xxxxxxx
Web: http://www.lexa.ru/lexa