2015-10-17 142 views
1

我嘗試將它綁定到request.session或request.user,但具有相同的錯誤 - '未定義函數'。我如何使用創建的req.session.idle =新的SteamIdle('用戶','通')在/啓動路由器在/停止路由器,如果我直接通過url訪問它們(localhost:3000/start和localhost:3000/stop )?如何在少數路由器中使用創建的對象?

router.get('/start', checkAuth, function(req, res, next) { 
    res.setHeader("Content-Type", "application/json"); 

    var data = { 
     statusCode: 1, 
     status: 'connected' 
    }; 

    if (typeof req.session.idle == "undefined") 
     req.session.idle = new SteamIdle('user', 'pass'); // created instance 

    if (!req.session.idle.isLogin){ 
     req.session.idle.connect(); 
     // req.session.idle.disconnect(); this will work here, but not in /stop router 
    } 
    res.send(data); 
}); 

router.get('/stop', checkAuth, function(req, res, next) { 
    res.setHeader("Content-Type", "application/json"); 

    var data = { 
     status: 'done' 
    }; 

    if (typeof req.session.idle != "undefined"){ 
     req.session.idle.disconnect(); //undefined function, is there any way to make it work? 
     delete req.session.idle; 
    } 
    res.send(data); 
}); 

SteamIdle

function SteamIdle(user, pass){ 
    var self = this; 

    self.userName = user; 
    self.password = pass; 

    // Main func 
    self.disconnect = function() { 
     console.log('disconnect'); 
    } 

    self.connect = function(auth){ 
     console.log('start work for user ' + self.userName); 
    } 
} 

module.exports = SteamIdle; 
+0

它將如何從/開始/停止路線(我沒有在你的代碼中看到next(),路線也不會匹配)或者你期望在下一個請求中使用它嗎?在這種情況下,node創建新的req&res對象,所以你不能'使用這種方法綁定到req,你必須通過db –

+0

我只是想這樣 - http:// localhost:3000/start,http://本地主機:3000 /停止。我可以在用戶請求中保存我的變量,但是我無法保存對象的實例? – SLI

+0

sry misunderstood ur que –

回答

0

我找到了解決方案。我使用nodejs的快速框架。在Express API - 我發現具有全球範圍的app.locals propertis。所以我創建了req.app.idle =新的SteamIdle('user','pass')對象,並且可以在/停止路由器時訪問它的斷開連接功能。

0

好吧,RU嘗試發送由鉻或某些瀏覽器請求,問題是他們發送REQ兩次(其它獲得的favicon這打亂了烏拉圭回合的會話對象)

請嘗試從一些rest client像郵遞員,它vl work

在我使用的代碼req.session.idle = {'a':'1'}並能夠使用郵遞員在停止路線中獲得此json

+0

這就是要點。我可以得到它,但是如果我創建了一個對象SteamIdle的實例。比我在停止路線中不能使用SteamIdle funcs。它具有連接和斷開功能,它們只在創建SteamIdle的路徑中工作。 – SLI

+0

可能steamIdle創建一些對象,並沒有綁定他們的會話,指向我的鏈接到SteamIdle –

+0

附加的SteamIdle代碼到我的第一篇文章 – SLI

相關問題