Плагин Comet

Вопрос получения уведомлений о работе сайта в режиме реального времени без перезагрузки страницы возникал наверное у каждого, кто работал с Альто. В некоторых обсуждениях этот вопрос проскальзывал и … решение, наконец, было сделано.
Плагин, использует comet-сервер Dklab Realplexor http://dklab.ru/lib/dklab_realplexor/ и позволяет получать от сервера моментальные уведомления о действиях других пользователей.
Возможности плагина, который, кстати, установлен и функционирует на altocms.ru, показаны на этом видео (я так и не разобрался с кодеками ютьюба, поэтому смотреть ролик лучше в самом максимальном качестве).

При работе плагина есть ограничение: на вашем сервере должен быть установлен Realplexor, иначе плагин, увы, не заведется :(

Плагин будет платным и появится в каталоге после его тщательного тестирования на сайте altocms.ru, прошу принять в нем участие и все ошибки или недочеты писать сюда или мне в личные сообщения.

24 комментария

+1
Как человек дважды начинавший реализовывать подобный функционал, могу сказать что вы охватили очень много событий. Что безусловно отлично.

Не думали сделать подгрузку новых комментариев? Я понимаю, что если они будут подгружаться автоматом то страница будет убегать. Но в письмах в личной переписке это было бы актуально. В статьях, тоже стоило бы передать выбор админу.
Т.е. если бы сделать возможность выбора в конфиге, выводить ли сразу комментарии было бы вообще здорово.

Также хотелось бы уточнить привязку к шаблону. Вот например адаптировать к шаблону Brand насколько трудоемко?
Отредактирован:
+1
Не думали сделать подгрузку новых комментариев?
Думал, но вы правы, при подгрузке комментариев страница просто убегает. Автоподгрузка сделана на стене пользователя, там короткие сообщения и пользователь ждет их появления. В комментариях по другому, я думаю будет несколько напрягать, когда вчитываешся в комментарий, а он убегает. Сделать это не сложно — события от сервера получает js-скрипт и в нем достаточно вызвать загрузку новых комментов, как это делается при нажатии на кнопку загрузки комментов в правой плавающей панели.

Вот например адаптировать к шаблону Brand насколько трудоемко?

Адаптация к шаблону на сайте altocms.ru пол дня, к start-kit — пару часов. Точнее не скажу — надо смотреть по месту.
0
Сделать это не сложно — события от сервера получает js-скрипт и в нем достаточно вызвать загрузку новых комментов, как это делается при нажатии на кнопку загрузки комментов в правой плавающей панели.
Ой, ой это плохой путь. Правильнее передавать уже комментарий в уведомлении и просто выводить на странице. Понимаю что это сложнее, готов сам заняться.
0
Да, не хорошо, но это самый простой вариант
+1
Сам плагин хорошо расширяется на события и все они реализованы по одному принципу
+1
Так дайте же поиграться =)
+1
На видео притормаживают события. Как насчёт нагрузки на сервер?
0
Притормаживает загрузка сообщений на стене, на этом сервере 2-3 секунды, нагрузку на сервер пока не тестировали. Можете у меня на стене написать что-то, проверим — altocms.ru/profile/andreyv/wall
0
И правда очень интересно. Отображение сообщения на стене занимает 1 секунду без включенного плагина. Безумно долго
0
Я сдаюсь. По отдельности и публикация довольно быстрая и функция получения новых записей. А вместе долго…
0
Спустя много часов я таки разобрался почему долго публикуется конкретно у меня. Совершенно забыл про limit_req_zone указанный в конфиге Nginx. Так что на стену публикуется все норм =)
+1
А не напишешь подробнее — что за параметр и на что влияет? Авось, кому-то сохранит много часов. Можно даже отдельным топиком
+1
Написал altocms.ru/879.html. У меня было настроено не более одного запроса в секунду. Разрешались всплески до 5 запросов, но не была убрана задержка в 1 секунду для каждого запроса. Поэтому шла публикация надписи на стену. Секунда паузы. В этом время комет кидал событие в соседний браузер и тот запрашивал новые записи. Еще секунда паузы и новые записи запрашивал браузер где публиковалась сама запись.

Установка nodelay решила данную проблему.

Но как оказалось это только начало. Одновременная работа с двумя браузерами выявила еще одну проблему. после публикации то 2 то 3 записи на стену у меня залипал php-fpm на 20 секунд. Потом обрабатывал часть запросов и мог снова залипнуть на теже 20 секунд. Не буду описывать что было перенастроено и испытано.

Виноваты во всем оказали настройки «Принудительно обрабатывать CSS» и «Принудительно обрабатывать javascript». При одновременных запросах, а при использовании комета это особенно наглядно, генерируются файлы и процессы блокируют друг друга и 20 секунд выясняются отношения чей же файл. Это я к тому что на работающем проекте отключайте принудительную обработку.
+3
Плагин классный, я такой же функционал на ls сделал с помощью двух плагинов, но не совсем доволен результатом.
Скажите пожалуйста, как сильно ваш плагин будет нагружать сервер, и что с ним будет при 50-60 одновременно активных пользователях?
И еще, а почему comet а не nodejs?
0
Сам реалплексор, на сколько я понял, не требователен к ресурсам, он держит подключения и по запросу веб-сервера отдает клиентам, тем, кто подписан на события набор данных. Плагин, в текущей реализации, отдает десятки килобайт на сообщения. При сотнях подписчиков объем данных возрастет, но ту все зависти от пропускной способности канала.
Тестирование нагрузки пока не проводилось, но теория и мануалы показывают, что всё должно работать. Вот тут утверждают, что реалплексор поддерживает до сотни тысяч подключений, а плагин на каждого пользователя выделяет до 5-и.

И еще, а почему comet а не nodejs?
Ни каких предпочтений, просто был выбор и я выбрал реалплексор.
0
А что будет с медленными подключениями, с мобильных устройств и т.д., что будет если сокет по какой-то причине закроется — соединение переустановится со стороны клиента, или вылезет ошибка?
Отредактирован:
0
Вот тут habrahabr.ru/post/86863/ под заголовком «Как оно устроено внутри?» очень подробно про это написано.
0
На некоторых мобильных браузерах типа мобильной оперы работать не будет так как они полноценный js не поддерживают.
+1
перестала работать загрузка картинок
0
Вчера… И предпросмотр при создании топика.
0
Плагин еще не протестирован?
0
Нет ещё.
0
Когда появится данный плагин?
0
Когда примерно можно будет скачать — купить? хочу себе поставить это чудо )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.