Твиттер на консоли с помощью 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.
Есть множество уроков по этому вопросу: