2015-05-05 2 views
3

Я использую экспресс для создания небольшого веб-приложения. (Получение информации о совпадении из Steam)Создать «Объекты» новые для каждого запроса

Поскольку я не хочу, чтобы мой клиент Steam был зарегистрирован в течение всего времени, я связал Steam Login в ответе.

Я создал простой пример приложение с курьерским и добавил маршрутизатор, используя

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(); 
        }); 
       }); 
} 

Но теперь, когда я открыть веб-страницы во второй раз, клиент говорит мне, что я вышел из системы. Почему вторая часть не выполняется? (создать пар var, login, ...?).

спасибо.

Если вам нужна дополнительная информация, я могу загрузить пример приложения. (Я не знаю, важно ли создание http-сервера для моей проблемы)

ответ

2

Я создал node-csgo, чтобы я мог оказать некоторую помощь.

Что вы делаете, это создание нового парового клиента каждый раз, когда кто-то запрашивает вашу веб-страницу из экспресса, а затем впоследствии убивает его, что на самом деле не лучший способ выполнить вашу задачу. Я бы рекомендовал попробовать что-то вроде того, что я сделал ниже.

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)); 
       }); 
     } 
    }); 
}); 
Смежные вопросы