节点JS Twitter模块 - 超出了用户的连接限制

时间:2016-01-22 13:25:24

标签: javascript jquery node.js twitter

我正在建立一个节点应用,用户可以在Twitter上选择要关注的关键字。他们的墙壁'当新推文带有所选关键字时,它会自动更新。

我构建它的方式是每个用户加入以其用户ID命名的自己的房间。然后应该将推文推送到他们的房间并使用jQuery预先添加到列表中。

问题是,如果我打开4个选项卡并在其中记录4个不同的用户,则只更新使用他们的Twitter提要登录的前2个用户!我记录它的顺序并不重要,只有第一个接收更新。

记录错误时,我得到:超出用户的连接限制

我猜测Twitter只允许每个API帐户进行一次连接。这是对的吗?

有没有办法解决这个问题,因为我需要为每个用户提供单独的流?

我的服务器代码是:

var socket  = require( './public/node_modules/socket.io' );
var express = require('./public/node_modules/express');
var request = require('./public/node_modules/request');
var Twitter = require('./public/node_modules/twitter');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server );
var port    = process.env.PORT || 4321;

 server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

//setup Twitter Details
var watchList = ['ferrari'];
var T = new Twitter({
   consumer_key:         'xxx'
  , consumer_secret:      'xxx'
  , access_token_key:     'xxx'
  , access_token_secret:  'xxx'
});

io.on('connection', function (client) {


client.on('join', function(data)
  {


//send to the user in question i.e client
client.emit('update','You are connected');

//send to ALL users
io.sockets.emit('update', 'New user '+data.name+' has joined');


client.join(data.id, function()
{
  console.log('JOINING ROOM: '+data.id+' following: '+data.following);

   if(data.following!='')
      {



        T.stream('statuses/filter', {track: data.following}, function(stream) {
          stream.on('data', function(tweet) {
            client.emit('stream',tweet.text);              
          //io.sockets.to(data.id).emit('stream', tweet.text);
          });

          stream.on('error', function(error) {
            console.log(error);
          });
        });

      }  
   }); 

  });


});

提前致谢

0 个答案:

没有答案