Очередное обновление, теперь с большим братом

dev.nodeca.com

Эта запись в основном для разработчиков, т.к. апдейты в архитектуре, и новых штук для “помацать руками” почти нет.

Есть такая модная фишка - обновление страничек в браузере пользователя, если там что-то произошло. Например кто-то добавил пост в тему, которую вы смотрите, или кто-то прислал сообщение в личку, когда вы разглядываете страницу. Или если у вас чатик открыт в нескольких вкладках. Примеров для народного хозяйства можно найти много. На практике делается так - браузер постоянно держит соединение с сервером и получает обновления о тех страницах, в которых заинтересован. То есть постоянно перегружать страничку не надо. Т.к. все делается по современному протоколу websockets, то накладные расходы небольшие.

Но есть проблема - пользователь может запросто открыть и десять и двадцать вкладок. А если держать соединение из каждой - будет уже заметно. На сервере просядет процессор, а клиентам на мобилках насчитают лишний траффик. Поэтому заботливые люди поступают хитрее - пишут “роутер”, который конннектится из одной вкладки, и раскидывает сообщения по всем остальным. Естественно, если вкладку закроют, то роутер автоматически поднимается в другой.

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

Т.к. “визуальных” обновлений нонче немного, дальше будет о новых и почти новых библиотеках, написанных за последнее время. Возможно, будет полезно кому-то из разработчиков. Качество кода, как обычно, максимально возможное 😃 Все покрыто тестами и т.п. Можете быть уверены, что библиотеки делались не из-за NIH-синдрома, а потому что не нашлось готовых, которые бы устроили. В каждой есть свой изюм, кому интересно - сравнивайте с другими.

Полностью готовое:

  • navit - библиотека для тестирования страниц сайтов через phantomjs. Очень упрощает написание тестов. В конце описания - сравнение с другими самыми популярными.
  • event-wire - медиатор с возможностью сортировать обработчики. На нем написана вообще вся нодека.

В процессе:

  • queue - распределенная очередь задач, с поддержкой мапредьюса, расписания и т.п. Код полностью готов, но еще не выделен в отдельный пакет. Пока набиваем нодеку задачами и сорцы “отстаиваются”. Но логика блокировок проверена, тесты есть, так что проблем не ожидается. Если кто-то хочет себе - могу опубликовать пораньше.
  • live - crosstab communication, о котором писал в начале сообщения. На демке уже работает, на следующей неделе доведем до ума и выложу отдельно для всех.

Из прочего - markdown-it, который делался для нодеки, оказался настолько удачен, что его уже воткнули себе Diaspora*, NodeBB и скоро воткнет Discourse.

  • 612