Риалтайм твиттер – риал? тайм!
У отличного сервиса Twitter есть хороший API, особенность – Streaming API, возможность получать данные из твиттера мгновенно, почти в реальном времени (риалтайм веб?).Меня заинтересовала такая возможность, тем более есть необходимость получать статусы из твиттера всех пользователей СТАНЦИИ 2.0 (конечно, у кого есть твиттер) и отображать их на странице в реальном времени. Похожая идея реализована тут, только это видимость реального времени, т.к. делается один запрос на сервер, и постепенно по одному статусу показывается на странице, затем следующий запрос и так далее :)На CPAN я нашел реализацию Twitter Streaming API – AnyEvent::Twitter::Stream.
С помощью модуля, действительно, очень просто получать статусы пользователей в реально времени, примера из синопсиса достаточно, чтобы быстро реализовать это.Далее полученные статусы пользователей каким-то образом надо выводить, отдавать клиенту.
Идеальный вариант – Push-сервер и соответствующий клиент на JavaScript. Но я пока так не умею, камень преткновения – клиентская сторона (делал такое – сервер и клиент на Perl).
Я выбрал следующую реализацию (выбирал так, чтобы быстро реализовать):
Но:
С помощью модуля, действительно, очень просто получать статусы пользователей в реально времени, примера из синопсиса достаточно, чтобы быстро реализовать это.Далее полученные статусы пользователей каким-то образом надо выводить, отдавать клиенту.
Идеальный вариант – Push-сервер и соответствующий клиент на JavaScript. Но я пока так не умею, камень преткновения – клиентская сторона (делал такое – сервер и клиент на Perl).
Я выбрал следующую реализацию (выбирал так, чтобы быстро реализовать):
- простой и быстрый сервер – точно должен быть мультиплексирующий, думал о AnyEvent::Mojo (устарел, т.к. последний Mojo обратно не совместим, но подправить не сложно, просто не решился :), выбрал AnyEvent::HTTPD (заработал сразу :),
- постоянно опрашивающий "тупой" клиент (jQuery решает), который выводит только новые для него сообщения,
- формат данных – JSON (последнее время всегда такой формат выбираю, спасибо JSON::XS, очень быстро работает).
Но:
- данный скрипт вылетает при возникновение ошибки соединения с твиттером,
- ограничение в 150 запросов в час на API твиттера, иначе 401/406 ошибка.