2011-12-31 4 views
0

Я использую expressjs вместе с nowjs, я привязываю некоторые события к объекту now прямо в маршруте, когда к нему обращаются. Это не очень чисто, и я чувствую, что все, к которому обращается корень, выполняются.Событие, связанное по маршруту Node.js

Я не уверен, как, но мне интересно, могу ли я переместить это в другое место?

app.get('/room/:name', function(req, res) 
{ 
    //Should this code be moved elsewhere?... how? 
    nowjs.on('connect', function() 
    { 
    this.now.room = req.params.name; 
    nowjs.getGroup(this.now.room).addUser(this.user.clientId); 
    console.log("Joined: " + this.now.name); 
    }); 

    everyone.now.distributeMessage = function(message){ 
    nowjs.getGroup(this.now.room).now.receiveMessage(this.now.name, message); 
    }; 

    res.render('room', { user : user }); 
}); 

ответ

0

Вы могли бы отделить код номера из в другой модуль, возможно, даже применяя шаблон, такие как MVC вашему приложению.

var Room = require('./models/room'); 

... 

app.get('/room/:name', function(req, res) { 
    Room.initialize(params.name); 
    res.render('room', {user: user}); 
}); 

// models/room.js 

Room = { 
    initialize: function(name) { 
    nowjs.on('connect', function() { 
     this.now.room = name; 
     nowjs.getGroup(this.now.room).addUser(this.user.clientId); 
     console.log("Joined: " + this.now.name); 
    }); 

    everyone.now.distributeMessage = function(message){ 
     nowjs.getGroup(this.now.room).now.receiveMessage(this.now.name, message); 
    }; 
    } 
}; 

module.exports = Room; // makes `require('this_file')` return Room 

Я не супер знакомы с Now.js, но вы получите идею - но код, который не касается стека HTTP в другом модуле, в другом файле, и требуют его и использовать его когда необходимо.

+0

Да, я вижу. Меня больше беспокоило событие .on(), вызываемое при каждом доступе к странице. Это будет сделано сейчас. Благодарю. –

Смежные вопросы