如果仅客户端连接到服务器,则如何发送流推文

时间:2013-11-03 20:10:54

标签: node.js twitter socket.io

我开发了一个非常简单的节点应用程序,我使用“Sokect.IO”来使用来自特定Twitter帐户的“ntwitter”来传输推文。

所以当有新的推文时,我就有了这段代码:

twit.stream('user', {track:'KITKAT'}, function(stream) {
    stream.on('data', function (data) {
        try{
            var tweet = {};
            tweet.name = data.user.name;
            tweet.avatar = data.user.profile_image_url;
            tweet.content = data.text;
            tweet.dateTime = moment(data.created_at).format('llll');
            //console.log(tweet);
            socketServer.sockets.emit("tweet", tweet);
        } catch(e){
            console.log("Error: " + e);
        }
    });
});

socketServer.sockets.on("connection", function(socket){
    console.log("new socket");
    var origen = socket.handshake.address.address;
    if(origen == "127.0.0.1")
        return;
    socket.emit("connection", "connection refuse: " + origen);
    socket.disconnect();

});

“问题”是,即使网站上没有用户正在观看推文,也会尝试流式传输新的推文。

如果仅在我连接用户时才能获取推文,我该如何限制?

您可以看到我正在做的事情的示例:http://juanjardim.com/work/node

由于

1 个答案:

答案 0 :(得分:1)

你需要存储你的连接然后迭代一个对象ou数组以发出推文,如果没有连接存储你的循环将无效检查这个问题:Nodejs, clients not always receiving server messages