Комментарии 17
Вообще-то, наверное, «текстовый чат».
+2
Так делали ещё во времена, когда я ходил пешком под стол, да и решение такое вполне очевидно и не вызывает какого-либо интереса, в чём смысл статьи — притвориться КО?
Я бы понял, если бы рассказывалось о реализации поллинга или архитектуре\паттернах вебсокетной реализации.
Я бы понял, если бы рассказывалось о реализации поллинга или архитектуре\паттернах вебсокетной реализации.
+3
Наверное реклама проекта, потому что статья на самомо деле слабоватая. Пару гистов чтобы не забыть )))
+1
Не совсем так. В этой реализации, как я вижу, PHP не дёргается каждые пол секунды как «ещё во времена, когда я ходил пешком под стол» а дёргается nginx что как я понимаю в десятки раз увеличивает нагрузку которую сможет такое решение выдержать по сравнению с той реализацией, которую вы имеете ввиду.
По сути статья в 2х словах — смотрите какой интересный модуль есть у nginx и как его можно использовать.
Автору спасибо за наводку на модуль, интересно будет посмотреть его.
По сути статья в 2х словах — смотрите какой интересный модуль есть у nginx и как его можно использовать.
Автору спасибо за наводку на модуль, интересно будет посмотреть его.
+6
ETag и Last-Modified же собирается после отработки всего серверного кода, разве нет? Если я прав, то мы получаем наоборот только увеличение нагрузки (двойной запрос) — один на проверку актуальности, другой на получение данных.
0
Нет, JS всегда(если конечно же в какой-то момент AJAX запрос не вернёт success и дело не дойдёт до setTimeout), каждые пол секунды, долбит nginx на тему нет ли чего нового (при этом PHP не используется). Все сообщения Nginx хранит в ОЗУ —
А в nginx они попадают, в данном примере, через PHP, который при каком-то событии пихает их туда вот так:
По крайней мере я так это понял по коду. Но могу ошибаться.
push_stream_shared_memory_size 32M;
А в nginx они попадают, в данном примере, через PHP, который при каком-то событии пихает их туда вот так:
$channel_id = subscriber1; //id канала для публикации сообщения
$message=’Привет!’; // сообщение
//отправка сообщения
$ch = curl_init('http://127.0.0.1/publish?id='.$channel_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));
curl_exec($ch);
curl_close($ch);
По крайней мере я так это понял по коду. Но могу ошибаться.
0
Кстати говоря, вот ещё статья про этот плагин на хабре Long Polling от А до Я своими руками
0
Я бы на вашем месте использовал websocket.
0
Хе. тема видеочата в разы была бы интереснее.
0
Не знал про подобный модуль, очень вовремя появился пост. Который раз уже такое случается — всплывает проблема и практически сразу на хабре появляется статья с решением. Магия (:
Есть необходимость использовать websocket или long-polling, проект на Groovy + Grails (Java). Есть grails-плагины использующие Atmosphere, но как-то не хочется с ними возиться, да и непонятно, что с производительностью.
А тут такое интересное решение, а главное — универсальное (подходит для чего угодно), да и производительность должна быть неплохой.
Есть необходимость использовать websocket или long-polling, проект на Groovy + Grails (Java). Есть grails-плагины использующие Atmosphere, но как-то не хочется с ними возиться, да и непонятно, что с производительностью.
А тут такое интересное решение, а главное — универсальное (подходит для чего угодно), да и производительность должна быть неплохой.
0
Ничего особенного.
-1
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
Текстовый чат для сайта