0
<< предыдущая заметкаследующая заметка >>
23 апреля 2011
Внимание владельцам движков: imbload 1.0

Итак, мы вплотную приступили к реализации концепции браузерной ленты.

Честно сказать, я не собирался этим пока заниматься, а строил новый инсталлятор. Но выяснилось, что аякс меж разными сайтами уже не работает совсем (раньше еще в Firefox 2 работал, например), поэтому пришлось заняться межсайтовыми делами.

В итоге мы получили вполне работоспособный в новых браузерах imbload первой версии. Он пока ничего не умеет, кроме как отдавать контент.

Итак, обновляем движок (инсталл для новых инсталляций уже отключен, но в старых должен работать). Появился модуль IMBLOAD.php в другой папке (взамен старого — он неработоспособный). И появился модуль FRIENDS.php.

Далее надо создать страницу /imbload (руками {_IMBLOAD:_} или в /admin кнопкой) — этой странице сайт будет отвечать на запросы браузеров.

А также /friends — это будет ваша лента. В моей прописано сейчас так:

{_FRIENDS:
lleo.aha.ru/dnevnik
binoniq.net
lleo.aha.ru/blog
_}

Это список того, что я читаю в ленте.

Установите это, я с удовольствием впишу ваш блог в свою ленту и буду читать.

Вкратце принцип работы:

Загрузив страницу /friends, мой браузер получает задание — какие сайты ему надо самостоятельно обежать, чтобы собрать ленту (дату последнего обхода ленты он хранит в своем браузерном хранилище и предъявляет сайтам). Он создает нужное количество элементов iframe (даже если сторонний сайт захвачен врагом, iframe надежно изолирует) и в каждом iframe запрашивает сайты (по адресу http://сайт/imbload) отдать ему последние посты после такого-то времени и т.п. Посты сопровождаются специальным javascript, который общается с главным окном, помогает установить нужную высоту iframe после загрузки — само по себе центральное окно тоже никакого доступа в чужой iframe не имеет по браузерной политике безопасности. В будущем главное окно и окна iframe смогут общаться более плодотворно — там будет и восстановление недоступных постов из общественного кэша, и много чего интересного. Но пока первый шаг — интерактивная лента, собираемая браузером в реальном времени.

На вопросы типа «а зачем это, а чем не устраивает rss» я отвечать не буду, поскольку правильный ответ такой: я реализую особую модель ленты, при которой ленты собирает браузер в реальном времени. Считаю, что это нужно и за этим будущее. Нравится — присоединяйтесь.

Протокол простой, описываю:

Мой браузер, собирая ленту, запрашивает у вашего сайта такую страницу:

http://ваш_сайт/imbload?limit=2&time=333333#IMBLOAD|lleo.aha.ru|imbload4

Где:
limit=2 — максимальное число постов вашего сайта/блога, которые я прошу выдать
time=333333 — выдать заметки, чье время обновления старше этого времени в формате unix
можно использовать верхнее ограничение timeto=444444 — выдать заметки, чье время обновления до
И еще две опции, которые ваш сервер не увидит, но они нужны для возврата:
lleo.aha.ru — адрес сервера главного окна (сидя в iframe, вы его не узнаете)
imbload4 — id iframe в главном окне, куда вы подгрузитесь, его вы тоже сами бы не узнали

Далее ваш сайт получил всю информацию запроса и должен выдать страницу с нужными постами. Любую. Как угодно сверстанную. Хоть с рекламой, хоть с флэшом, хоть со скриптами — технология позволяет всё. Единственное требование: ваша страница должна самостоятельно определить свою высоту и передать в главное окно, чтобы я смог в своей ленте выровнять ваш iframe. Для этого надо выполнить на своей странице такой javascript:

if(window.top !== window.self) { var r=window.location.hash.split('|'); window.top.postMessage('HH|'+r[2]+'|'+(document.compatMode!='CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight),'http://'+r[1]);
}

Если вы используете собственный движок, поставьте подобный скрипт на свой сайт, чтобы он тоже мог отдавать заметки браузерам по imbload. Будем активно продвигать эту простую, но полезную технологию.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
Страницы, которые привлекли мое внимание за последние дни, рекомендую:
архив ссылок
Оставить комментарий


Include not found: `/home/www/lleo.me/blog/template/_reklamnaya_lirica.htm`