创建'对象'每个请求的新内容

时间:2015-05-05 14:08:56

标签: node.js express

我正在使用express来构建一个小的Web应用程序。 (从Steam获取比赛信息)

由于我不想让我的Steam客户端一直登录,我在回复中绑定了Steam登录。

我用express创建了一个简单的示例应用程序,并使用

添加了路由器
app.use('/user', users);

现在在我的user.js文件中

router.get('/', function(req, res, next) {
 if (req.query.id == null || req.query.id == '') {
       console.log('wrong');
    } else {
   var steam = require('steam'),
            fs = require('fs'),
            csgo = require('csgo'),
            bot = new steam.SteamClient(),
            CSGO = new csgo.CSGOClient(bot, false);

//... login and event handlers ...

 CSGO.on('ready', function () {
                    console.log('node-csgo ready.');

                    CSGO.requestRecentGames(CSGO.ToAccountID(req.query.id));
                    CSGO.on("matchList", function(list) {
                        res.end(JSON.stringify(list, null, 2));
                        CSGO.exit();
                    });
                });
}

但是现在当我第二次打开网页时,客户端告诉我我已经注销了。为什么第二次没有执行该部分? (创建steam var,login,...?)。

谢谢。

如果您需要更多信息,我可以上传示例应用。 (我不知道http服务器的创建是否对我的问题很重要)

1 个答案:

答案 0 :(得分:2)

我创建了node-csgo,因此我可以提供一些帮助。

您似乎正在做的是每次有人从快递网站请求您的网页时创建一个新的Steam客户端 - 然后杀死它,这实际上不是完成任务的最佳方式。我建议尝试类似我在下面所做的事情。

var steam = require('steam'),
    fs = require('fs'),
    csgo = require('csgo'),
    bot = new steam.SteamClient(),
    CSGO = new csgo.CSGOClient(bot, false);

// Do your login and event handling here

// Once the CSGO client is ready, then allow the web server to take requests.
CSGO.on('ready', function() {
    console.log('node-csgo ready.');
    router.get('/', function(req, res, next) {
        if (req.query.id == null || req.query.id == '') {
            console.log('wrong');
        } else {
                CSGO.requestRecentGames(CSGO.ToAccountID(req.query.id));
                CSGO.on("matchList", function(list) {
                    res.end(JSON.stringify(list, null, 2));
                });
        }
     });
 });