Socket.IO Scoping Issue (Node.JS) - PullRequest
       4

Socket.IO Scoping Issue (Node.JS)

2 голосов
/ 11 августа 2011

Я работаю над проектом node.js, в котором я использую Socket.IO, и у меня возникла проблема с решением проблемы с областями видимости.Вот что я пытаюсь сделать:

var io = require('socket.io').listen(80);
session_manager = require('./includes/session_manager');

// client joins the socket server
io.sockets.on('connection', function(client) {
    client.on('X.Session.join', function(session_id, client) {
        session_manager.joinSession(session_id, function(err, session) {
            // do whatever
        });
    });
    // BRING IN MORE LISTENERS/EMITTERS?
    require('someModuleIBuild');
});

Как вы можете видеть, я в основном устанавливаю начальное соединение, присоединяясь к сеансу через управляющий класс (так что я знаю, кому отправлять сообщения для какого сеанса)а затем я пытаюсь динамически внести некоторые пользовательские вещи, которые также будет излучать и прослушивать через сокет соединение.

Итак, как я могу сослаться на это текущее соединение из-за пределов моих пользовательских модулей?Все примеры, которые я видел, содержат все функции «on» и «emit» в одном файле, что, похоже, может довольно быстро выйти из-под контроля.

Возможно, я слишком обдумываю / усложняю это (это мой первый проект node.js, первый проект на основе сокетов, первый проект в основном на javascript и т. Д.), Но любая помощь будет принята.

1 Ответ

1 голос
/ 11 августа 2011

создайте свои модули, как это, и вы можете передать client в модуль

module.exports = function(client) {
    client.on("whatever", function () {

    });

    client.on("whenever", function (data) {

    });
};

, а затем выполнить требование, как это

require('someModuleIBuild')(client);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...