2012-09-12 66 views
0

我有這個非常簡單的應用程序,它使用ntwitter和socket.io。 這是一個其他應用程序的鳥。 我把它放在Heroku上,它有幾個小時的工作。 日誌沒有顯示任何內容,應用程序運行良好。 所以基本上它是安靜的神祕。ntwitter和Heroku在本地不起作用

請在這裏找到相應的應用:

https://github.com/soixantecircuits/whos-knocking-node/

在當地沒有問題的。使用 foreman start在當地完美的作品。

我迷路了,非常喜歡你的幫助。

對於那些你將有時間去檢查了GitHub庫,請波紋管發現代碼:

var twitter = require('ntwitter'); 
try { 
    var credentials = require('./credentials.js'); 
} catch (err) { 
    console.log("Error:", err); 
    console.log("Using environmental credentials."); 
    var credentials = { 
     consumer_key: process.env.CONSUMER_KEY, 
     consumer_secret: process.env.CONSUMER_SECRET, 
     access_token_key: process.env.ACCESS_TOKEN_KEY, 
     access_token_secret: process.env.ACCESS_TOKEN_SECRET 
    }; 
}  

var app = require('express')(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server);  

var port = process.env.PORT || 5000; 
var nTwitterCount = 0;  

server.listen(port);  

app.get('/', function(req, res) { 
    //res.sendfile(__dirname + '/index.html'); 
    res.writeHead(200, { 
     'Content-Type': 'text/plain' 
    }); 
    res.end('Ring the Bell\n' + nTwitterCount); 
});  


var new_tweet = {};  

var t = new twitter({ 
    consumer_key: credentials.consumer_key, 
    consumer_secret: credentials.consumer_secret, 
    access_token_key: credentials.access_token_key, 
    access_token_secret: credentials.access_token_secret 
}); 
t.stream('statuses/filter', { 
    track: ['soixantecircuits', 'ringthebell'] 
}, function(stream) { 
    stream.on('data', function(tweet) { 
     //console.log(tweet.text); 
     nTwitterCount++; 
     //new_tweet = tweet.text; 
     console.log(tweet); 
     io.sockets.emit('new_tweet', tweet); 
    }); 
    stream.on('error', function(response) { 
     console.log(response); 
    }); 
    stream.on('end', function(response) { 
     console.log(response); 
    }); 
    stream.on('destroy', function(response) { 
     console.log(response); 
    }); 
}); 

感謝您的幫助。

回答

0

我的直覺是,既然你使用的是Socket.io,你想使用Websockets。 Heroku還不支持Websockets。您將不得不使用Heroku上的Socket.io使用長輪詢。

看到這個:https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

總之,這樣做:

io.configure(function() { 
io.set("transports", ["xhr-polling"]); 
io.set("polling duration", 10); 
}); 

再次,這只是我的直覺。嘗試一下,讓我知道。

+0

我已經閱讀過關於這方面的內容。但是,不,這不是。 socket.io已正確打開,甚至嘗試使用您的設置不會改變heroku上的任何內容。 在本地機器上可以,在heroku服務器上失敗。 我真的不明白:( – user894023