2011-08-11 45 views
2

我正在研究一個node.js項目,該項目利用了Socket.IO,並且遇到了一個問題讓我的思考問題得到了解決。這就是我要做的:Socket.IO範圍問題(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」功能,看起來它很快就會失控。 (這是我的第一個node.js項目,第一個基於套接字的項目,第一個主要是javascript項目....等),但任何幫助,將不勝感激。

+0

我昨天剛遇到了同樣的問題。我目前正在使用的解決方案是讓我的自定義模塊發出事件,然後讓socket.io監聽任何此類事件......但我不確定這是否是最好的方法:\ –

回答

1

創建模塊,這樣,你可以通過client到模塊

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

    }); 

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

    }); 
}; 

,然後執行需要這樣

require('someModuleIBuild')(client);