Как сделать онлайн Twitter трансляцию у себя на мероприятии

Как сделать онлайн Twitter трансляцию у себя на мероприятии Одним из интерактивных элементов на конференции по маркетингу Digitale была онлайн трансляция twitter-сообщений по хеш-тегу. Сделать это на конференции выпало мне, и по началу я долго искал подходящий вариант в интернете. Такие сервисы как twihoo, twistori не хотят работать с конференциями и брендировать каналы. Именно поэтому мне пришлось написать такой скрипт самому.

Задача была проста, как только сообщение с хеш-тегом #dconf попадает в Twitter оно сразу же должно быть отображено на экране. Для этого я вооружился Node.js, Twitter Streaming API и Websockets.

Самое удобное в Node.js это возможность получать данные в потоке, а так как Twitter Streaming API отдает данные именно таким способом, то это идеальный вариант. Таким образом Node.js получает сообщения от Twitter.

https = require 'https'request = https.get  headers: Authorization: 'Basic ' + encode argv.name + ':' + argv.password  host: 'stream.twitter.com'  port: 443  path: "/1.1/statuses/filter.json?include_entities=true&track=" + encodeURIComponent argv.hash  method: 'GET'request.on 'response', (response) ->  response.setEncoding 'utf8'  body = ''  response.on 'data', (chunk) ->    body += chunk    newline = body.indexOf "\r"    if newline isnt -1      message = body.slice 0, newline      tweet = JSON.parse message      console.log tweet    body = body.slice newline + 1

Для отправки сообщений клиенту будем использовать Websockets, этот способ так же обеспечит максимально быстрое попадание сообщения с сервера на экран. Так как стандарт Websockets до сих пор находится в активной стадии разработки, и периодически меняется его реализация, то будем использовать socket.io для работы с веб-сокетами. Таким способом мы будем принимать сообщения на клиенте.

var socket = io.connect('http://127.0.0.1:8080');socket.on('connect', function() {  socket.on('message', function(tweet) {    var tweet = JSON.parse(tweet), content = '';    content = '<div class="name">' + tweet.name + '</div>';    content += '<div class="text">' + tweet.text + '</div>';    $('#tweets').prepend(content);  });});window.onbeforeunload = function() {  socket.disconnect();};

Исходники полной версии можно посмотреть на GitHub. Запустить сервер можно следующей командой.

node lib/twitter.js --name <имя пользователя в twitter> --password <пароль пользователя в twitter> --hash <хеш-теги по которым вы хотите вести трансляцию>

Так же в репозитории есть файл examples/index.html с примером реализации на клиентской части.

Twitter трансляция на любых мероприятиях это очень круто, это не дает участникам скучать. Кстати, именно за счет трансляции хеш-тег #dconf удалось вывести в тренды по всей России, что еще больше привлекло внимание.

Вывод #dconf в тренды России

И на последок. Вы можете посмотреть работающий пример на сайте Digitale Conference. Делал я этот скрипт только для последних версий Firefox, Chrome, Safari, но вы легко сможете доработать этот скрипт до нужного вам уровня поддержки.

Twitter трансляция на конференции Digitale

Пользуйтесь!

Что ещё почитать?

← Чем SVG лучше PNGПоддержка ECMAScript 5 и… →