I have a simple Node.js app hosted on Heroku that consumes a Twitter stream. It works fine sometimes, but when I review my logs, I see it has begun to crash regularly with an R10 error code.
I've done a good deal of googling for other questions on this topic, like this one, and the consensus seems to be that Heroku requires you to listen to process.env.PORT instead of explicitly setting your own port. Fair enough.
But I'm not setting a port anywhere in my code, and nor do I set up an http.createServer where I can .listen to one. So how can I solve this error? Any ideas?
Here's my code for reference:
var config = require('./config');
var count = require('./count');
var Twit = require('twit');
var T = new Twit(config);
port = process.env.PORT; // this is just for reference, not used anywhere
var stream = T.stream('user', {track: "@isitoveryet2016"});
stream.on('connect', function (request) {
console.log("Opening Twitter stream...");
});
stream.on('connected', function (response) {
console.log("Connected and streaming on port: " + port);
});
stream.on('tweet', function (tweet){
if (tweet.text.charAt(0) == "@"){
if (tweet.user.screen_name == "isitoveryet2016") {
console.log("Ignoring my own reply.");
} else {
var thisTweet = count.TimeLeft();
console.log("Received direct tweet from: " + tweet.user.screen_name);
console.log("Text: " + tweet.text);
T.post('statuses/update', {in_reply_to_status_id: tweet.id_str, status: "@" +
tweet.user.screen_name +
thisTweet}, function (err, data, res){
if (err) return handleError(err);
else console.log('tweet deployed!');
});
}
}
else {
console.log("Not a direct tweet, not replying.");
}
});
stream.on('warning', function (response) {
console.log(response);
});
stream.on('disconnect', function (response) {
console.log(response);
});
function handleError(err) {
console.error('response status:', err.statusCode);
console.error('data:', err.data);
}