Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io函数的位置_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 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

我正在尝试分离socket.io服务器中的逻辑,但我遇到了一些问题

比如说,我有以下几点:

    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);