我正在heroku上设置一个node.js twitter流媒体应用程序。在第二个客户端建立连接之前,它会正常工作。这是我没有预料到的,直到我把它给别人看:(
我正在使用Twitter -pipe的Twitter Stram API功能:https://github.com/peeinears/tweet-pipe
获取Socket。在开发Heroku时,我遵循了以下说明: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);
});
在我的app.js文件中有
io.sockets.on('connection', function (socket) {
tp.stream('statuses/filter', params, false, function (stream) {
stream.on('tweet', function (tweet) {
socket.emit('tweet', tweet );
});
});
});
同样,在另一个客户机访问该页面之前,这一切都工作得很好。然后,当第二个客户端有连接时,原始连接将丢失。任何想法吗?我对插座有点陌生。IO的东西。
一个twitter句柄只能有一个活动流。您不能将tp.stream
用于第二个客户机。
来源:
- https://dev.twitter.com/docs/streaming-apis/streams/public
- https://dev.twitter.com/discussions/921
这是我如何修复它,感谢Chad在评论中。它现在似乎工作得很好,因为它是活的,有点健康。
io.sockets.on('connection', function (socket) {
var tp = new TweetPipe({
consumer_key: process.env.CONSUMER_KEY,
consumer_secret: process.env.CONSUMER_SECRET,
token: process.env.TOKEN,
token_secret: process.env.TOKEN_SECRET
});
tp.stream('statuses/filter', params, false, function (stream) {
stream.on('tweet', function (tweet) {
io.sockets.emit('tweet', tweet );
});
});
});