Posterous theme by Cory Watilo

Filed under: twitter

Риалтайм твиттер – риал? тайм!

У отличного сервиса Twitter есть хороший API, особенность – Streaming API, возможность получать данные из твиттера мгновенно, почти в реальном времени (риалтайм веб?).

Меня заинтересовала такая возможность, тем более есть необходимость получать статусы из твиттера всех пользователей СТАНЦИИ 2.0 (конечно, у кого есть твиттер) и отображать их на странице в реальном времени. Похожая идея реализована тут, только это видимость реального времени, т.к. делается один запрос на сервер, и постепенно по одному статусу показывается на странице, затем следующий запрос и так далее :)

На CPAN я нашел реализацию Twitter Streaming API – AnyEvent::Twitter::Stream.
С помощью модуля, действительно, очень просто получать статусы пользователей в реально времени, примера из синопсиса достаточно, чтобы быстро реализовать это.

Далее полученные статусы пользователей каким-то образом надо выводить, отдавать клиенту.
Идеальный вариант – Push-сервер и соответствующий клиент на JavaScript. Но я пока так не умею, камень преткновения – клиентская сторона (делал такое – сервер и клиент на Perl).
Я выбрал следующую реализацию (выбирал так, чтобы быстро реализовать):

  • простой и быстрый сервер – точно должен быть мультиплексирующий, думал о AnyEvent::Mojo (устарел, т.к. последний Mojo обратно не совместим, но подправить не сложно, просто не решился :), выбрал AnyEvent::HTTPD (заработал сразу :),
  • постоянно опрашивающий "тупой" клиент (jQuery решает), который выводит только новые для него сообщения,
  • формат данных – JSON (последнее время всегда такой формат выбираю, спасибо JSON::XS, очень быстро работает).
Вот такой код сервера получился.

Риалтайм твиттер заработал.
Но:

  • данный скрипт вылетает при возникновение ошибки соединения с твиттером,
  • ограничение в 150 запросов в час на API твиттера, иначе 401/406 ошибка.
Последнее "но" придется обходить: либо умышленно делать <= 150 запросов, либо отказаться от Stream API и использовать обычное API, которое по крону будет получать новые статусы пользователей.

Все-таки риалтайм веб еще далеко, но ближе, чем был год назад :)

use Perl or die;

Just F*cking Do It

Original post http://sharifulin.livejournal.com/50658.html

Perl. POE or not POE

Я довольно быстро стал писать на POE различные простые мультиплексы, даже не смотрю в документацию :)
Так, например, сегодня пришлось написать микро-скрипт, который пробежится по базе твиттер-пользователей и проверит их аватары (многие урлы стали невалидными и Амазон очень красиво говорит 404 в виде XML). Скрипт я написал на POE, хотя знаю все недостатки его и есть опыт работы с AnyEvent, IO::Lambda, даже Coro + Coro::Mysql. Меня устраивает скорость разработки, но с другой стороны я понимаю, что надо от него уходить. Как перестать писать на POE? (свой мультиплекс писать я не буду :)

POE или не POE. Вот в чем вопрос :)

Original post http://sharifulin.livejournal.com/47957.html