簡體   English   中英

Heroku,Socket.IO,Node.js

[英]Heroku, Socket.IO, Node.js

我正在heroku上設置一個node.js twitter流應用程序。 它可以完美工作,直到第二個客戶端建立連接為止。 在向某人展示它之前,這是我沒想到的:(

我正在為Twitter Stram API功能使用tweet-pipe: https : //github.com/peeinears/tweet-pipe

為了使Socket.IO在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 );
    });
  });
});

同樣,這一切都很好,直到另一個客戶訪問該頁面。 然后,當第二個客戶端建立連接時,原始連接將丟失。 有什么想法嗎? 我對Socket.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 );
    });
  });

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM