Введение


Сервис создавался как система уведомлений для пользователей с любого сайта, который интегрировал PushAll API.
Однако не со всеми можно договориться, гиганты вообще не будут обращать долгое время внимание. При этом на данный момент большая часть пользователей, получает именно новостные уведомления с сайтов, а не личные. По этому поводу мне недавно посоветовали интегрировать RSS-рассылки. То есть по факту PushAll становится эдаким RSS-агрегатором, при этом на самом деле обычные пользователи чаще всего не нуждаются в привычных агрегаторах лент — они заходят на сайты самостоятельно и читают новости уже на них.



В этом плане PushAll пошел по своему пути — он не собирает все ленты в одну. Он лишь берет ленту, связывает её с каналов и делает рассылку с учетом фильтра. То есть пользователь заинтересованный в статьях и новостях определенных тематик получит сразу об этом уведомление. Менее полезную информацию он может прочесть потом самостоятельно.

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

Такое уже есть, но можно больше.


Не буду отрицать, все советы по поводу RSS были с оглядкой на Pushbullet. Я некоторое время гуглил информацию по агрегаторам — все скрывают время обновления. Я с трудом узнал, что Feedly обновляет ленты обычно лишь раз в 2-4 часа. А минимальное время обновления чуть ли не 30 минут. У Pushbullet я не нашел вообще информации по обновлению лент.

Также я хочу не просто скопировать этот функционал — я хочу его расширить. К примеру, у сайта может быть несколько источников, это и YouTube и личный сайт и возможно блог. В дальнейшем можно будет добавлять несколько лент к одному каналу. Также я постараюсь сделать систему исключения повторов. То есть видео опубликованное на YouTube будет разослано один раз, а не три раза, по каждому из источников. Также как правило не все надо рассылать. Для каждой RSS ленты можно будет задать отдельный фильтр, к примеру подкасты можно пушить, а что-то из категории дополнений к новостям можно и опустить. Также время обновления должно зависеть от числа подписчиков.

Что сделано сейчас, какие ограничения?


На данный момент готов минимальный функционал — добавление одной ленты к одному каналу. Канал должен быть публичным. Вы можете сами задать период обновления. К примеру, если вы уверены, что на сайте выходит одна новость в неделю, можно задать период вообще раз в 2-3 часа или больше.
Также период обновления зависит от числа подписчиков.



На скриншоте выше отображены все ограничения. Если вкратце — чем больше у вас подписчиков, тем чаще может обновляться канал. От 1 часа и вплоть до 1 минуты.

Алгоритм обновления на данный момент очень прост. Он однопоточен. Старается скачать первые 512 килобайт RSSки, если не выходит, качает всю. Для проверки берется всегда только первая запись, сверяется не была ли она оправлена ранее. В первую очередь будет улучшаться поддержка быстрого сканирования. У многих каналов есть поддержка кэширования, когда канал отвечает 304, в случае если нет новых данных, и поддержка получения только новых записей.
Для тестирования необходимо как можно больше разнообразных каналов, чтобы выявить возможные проблемы и оптимизировать работу с ними.

Что в итоге?


Теперь пользователи меньше зависят от сайтов. Они могут самостоятельно создавать каналы с RSS-лентами и получать необходимую им информацию в виде Push-уведомлений на смартфон с Android и браузер Chrome.

Комментарии (5)


  1. zelenin
    10.06.2015 02:25
    +1

    для инфо: есть свой приватный rss, скормленный в feedly. Обновляется каждые 15 минут. Feedly ходит ко мне четко раз в 3 часа ± 15 секунд на протяжении года.


    1. BupycNet Автор
      10.06.2015 02:33

      Странно, друг кидал инфу — у него где то раз в час обновления шли с RSS-канала.
      Вообще официально у него на бесппатном тарифе от 1 до 8 часов может быть.
      Для синхронизации ленты это еще неплохо (хотя 3 часа для новости возможно уже критично) Для уведомлений же критично как по мне не более часа. Поэтому даже канал с двумя подписчиками будет сканироваться раз в час.
      Если бы я делал Feedly — я бы вообще сделал так, что если кто то заходит в веб-интерфейс или мобильное приложение, то у каналов этого пользователя бы чуть повышался приоритет. Нагрузка от обновления ленты не сильно больше нагрузки от самого пользователя, загружающего страницы сайта. Сжатые ленты многих сайтов весят не более 1 килобайта. Исплользуя кэширование можно существеннно уменьшить любые затраты на проверку.

      Или же 3 часа вас вполне устраивают?


      1. zelenin
        10.06.2015 03:01

        это rss моей твиттер-ленты — 3 часа устраивают.


  1. KorP
    10.06.2015 14:48
    +1

    RSS в виде Push? Неее, я не согласен что бы у меня целый день на телефон сыпались новости… я по этому и RSS то на телефоне не читаю


    1. BupycNet Автор
      10.06.2015 15:37

      Именно поэтому есть фильтры. К примеру у меня есть канал СоХабр в системе. Я ввёл в фильтры ключевые слова и по ним получаю уведомления. Это те темы по которым я хочу сразу получать информацию. И каждый для себя может отфильтровать как хочет. А лента канала общая.
      RSS же тут только как источник.