Твиттер на консоли с помощью Ampersand.js?

Я пытаюсь создать простое приложение, которое транслирует твиты с помощью модуля Twit в узле и печатает их в веб-консоли. До сих пор следовали документам Ampersand.js дословно.

Моя структура каталогов:

TwitterLiveFeed/app.bundle.js

TwitterLiveFeed/app.js

TwitterLiveFeed/index.html

TwitterLiveFeed/streamtweets.js

TwitterLiveFeed/package.json

TwitterLiveFeed/node_modules/browserify

TwitterLiveFeed/node_modules/twit

Вот код:

streamtweets.js (модуль)

// twitterlivefeed/streamtweets.js

//require the twit npm module
var Twit = require('twit');


function streamTweets() {
    var T = new Twit({
        consumer_key:         '---'
      , consumer_secret:      '---        
      , access_token:         '---'
      , access_token_secret:  '---'
   })

    var stream = T.stream('statuses/sample')

    stream.on('tweet', function (tweet) {
      console.log(tweet)
    })
}

//export streamTweets as the module function

module.exports=streamTweets;

app.js

// ./twitterlivefeed/app.js

console.log("Welcome!")

// require the local module

var streamTweets=require('./streamtweets.js');

// calling function

streamTweets();

Затем я запускаю "./node_modules/.bin/browserify app.js -o app.bundle.js", чтобы скомпилировать приложение в один файл.

index.html

<!-- index.html -->
  <script src='app.bundle.js'></script>

Когда я запускаю index.html в браузере, он просто выводит "Welcome". Я вижу, что вкладка "Общий размер всех ресурсов" на консоли ошибок в Safari продолжает увеличиваться в размере, поэтому я уверен, что код что-то делает. Просто не могу получить какой-либо вывод.

Помогите?

РЕДАКТИРОВАТЬ 1:

Таким образом, я отредактировал код моего модуля к этому, и он работает.

var Twit = require('twit');

function streamTweets() {    

var T = new Twit({
    consumer_key:         ''
  , consumer_secret:      ''
  , access_token:         ''
  , access_token_secret:  ''
})

var options = { screen_name: 'username',
                count: 3 };

T.get('statuses/user_timeline', options , function(err, data) {
  for (var i = 0; i < data.length ; i++) {
    console.log(data[i].text);
  }
})

Почему вышеуказанный код работает, а поток не работает?

1 ответ

Посмотрите на документы Twitter:

Установление соединения с потоковыми API-интерфейсами означает создание очень долгоживущего HTTP-запроса и постепенный анализ ответа. Концептуально вы можете думать об этом как о загрузке бесконечно длинного файла по HTTP.

Я думаю, что это вообще дисквалифицирует браузер как конечную точку и "хост" для потоков. Гораздо лучшим решением было бы открыть соединение в серверной части Node.js и отправить поток клиенту (-ам) через WebSockets или socket.io.

Есть множество уроков по этому вопросу:

Другие вопросы по тегам