我正在建立一个节点应用,用户可以在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);
});
});
}
});
});
});
提前致谢