【发布时间】:2011-08-11 13:22:52
【问题描述】:
我正在开发一个我正在利用 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 项目......等等),但任何帮助将不胜感激。
【问题讨论】:
-
我昨天也遇到了同样的问题。我目前正在使用的解决方案是让我的自定义模块发出事件,然后让 socket.io 监听任何此类事件。但我不确定这是否是最好的方法:\
标签: javascript node.js scope socket.io