我正在尝试创建一个简单的应用程序,它使用节点中的Twit模块来流tweet,并将它们打印到web控制台。到目前为止已经逐字逐句地跟踪了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_node/..bin/browserify app.js -o app.bundle.js”将应用程序编译成一个文件。
index.html
<!-- index.html -->
<script src='app.bundle.js'></script>当我在浏览器上运行index.html时,它只会打印“欢迎”。在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);
}
})为什么上面的代码工作和流不工作?
发布于 2015-09-04 07:55:54
查看一下Twitter文档:
建立到流API的连接意味着发出一个很长时间的HTTP请求,并逐步解析响应。从概念上讲,您可以将其看作是通过HTTP下载无限长的文件。
我认为这通常会取消浏览器作为流的端点“主机”的资格。一个更好的解决方案是在Node.js后端打开一个连接,并通过WebSockets或socket.io将流发送给客户机。
有许多关于这方面的教程:
https://stackoverflow.com/questions/32390973
复制相似问题