Heroku, Socket.IO, Node.js



我正在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用于第二个客户机。

来源:

  1. https://dev.twitter.com/docs/streaming-apis/streams/public
  2. 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 );
    });
  });
});

相关内容

  • 没有找到相关文章

最新更新