我正在开发一个在其中利用 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');
});
如您所见,我基本上是在设置初始连接,通过管理类加入 session (这样我就知道为哪个 session 向谁发出消息),然后我尝试动态引入一些自定义内容,这些内容也是将通过套接字连接发射和监听。
那么我如何在我的自定义模块范围内引用这个当前连接呢?我看到的所有示例都在一个文件中包含所有“on”和“emit”功能,这似乎很快就会失控。
我可能想得太多/太复杂了(这是我的第一个 node.js 项目,第一个基于套接字的项目,第一个主要是 javascript 的项目......等)但任何帮助将不胜感激。
最佳答案
像这样创建你的模块,你可以将客户端
传递给模块
module.exports = function(client) {
client.on("whatever", function () {
});
client.on("whenever", function (data) {
});
};
然后像这样做要求
require('someModuleIBuild')(client);
关于javascript - Socket.IO 作用域问题 (Node.JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026622/