Javascript Socket.io函数的位置
我正在尝试分离socket.io服务器中的逻辑,但我遇到了一些问题 比如说,我有以下几点:Javascript Socket.io函数的位置,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在尝试分离socket.io服务器中的逻辑,但我遇到了一些问题 比如说,我有以下几点: io.on('connection', function (socket) { var fileModule = require('./costum_modules/FileModule.js')(io); app.use(fileModule); }); 现在,在fileModule中,我有以下代码: var fileModule = function (socke
io.on('connection', function (socket) {
var fileModule = require('./costum_modules/FileModule.js')(io);
app.use(fileModule);
});
现在,在fileModule中,我有以下代码:
var fileModule = function (socket) {
socket.on('userData', function(msg){
var i = 0;
});
}
module.exports = new fileModule();
遗憾的是,我没有定义套接字
我的问题是,我可以这样做吗?还是不可能将一个单例传递到另一个文件并使其从同一个对象读取?您可以使用其他文件来中断逻辑,但代码中存在一些问题 首先,我认为Hacketo是正确的,您不想使用新的fileModule,只是: 第二,当调用需要时,传递全局socketIO对象io。您应该将连接处理程序中获得的套接字传递给它。例如
require('./costum_modules/FileModule.js')(socket);
我认为这可以将一些socket.io消息处理代码移动到一个模块中。现在,套接字将响应来自客户端的userData消息。然而,除非您有一些自定义应用程序,否则我不认为app.use会达到您期望的效果。您不能将web套接字处理程序挂接到Express/Restify/Connect/Anwhere中间件链中。但您可以编写一个中间件,将消息发送到套接字服务器
如果您只是尝试在应用程序和套接字服务器之间共享会话,请尝试 函数fileModule接受一个参数套接字。我猜您不想这样做:新建fileModule,但您可能希望使用函数fileModule作为io的参数,fileModule@Hacketo这是否意味着我制作的所有子文件都必须作为参数进入io?
require('./costum_modules/FileModule.js')(socket);