2011-08-11 10 views
2

私はnode.jsプロジェクトでSocket.IOを利用していますが、スコープの問題を抱えているという問題を抱えています。ここで私が何をしようとしていますものです:Socket.IO Scoping Issue(Node.JS)

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"関数が1つのファイルに含まれています。

これは私の最初のnode.jsプロジェクト、最初のソケットベースのプロジェクト、最初の主にjavascriptプロジェクトなどですが、これ以上複雑すぎるかもしれませんが、何か助けていただければ幸いです。

+0

のように必要です私はちょうど昨日、同じ問題に遭遇しました。私が現在使っている解決策は、私のカスタムモジュールにイベントを送出させてから、socket.ioにそのようなイベントを待ち受けさせることです。しかし、それが最善の方法であるかどうかは分かりません。\ –

答えて

1

このようなあなたのモジュールを作成し、モジュール

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

    }); 

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

    }); 
}; 

clientを渡すことができますし、この

require('someModuleIBuild')(client);