Node.js 如何将socket.io连接导出到另一个控制器

Node.js 如何将socket.io连接导出到另一个控制器,node.js,socket.io,Node.js,Socket.io,我陷入了困境 我正在bin文件中建立一个Socket.IO连接,该连接正在工作,但是有人能告诉我如何将该连接导出到不同的控制器吗。这是我的bin文件代码 var-app=需要“../app”; var debug=require'debuguserservice:server'; var http=require'http'; /** *从环境中获取端口并存储在Express中。 */ var port=normalizePortprocess.env.port | |“3015”; 应用程序

我陷入了困境

我正在bin文件中建立一个Socket.IO连接,该连接正在工作,但是有人能告诉我如何将该连接导出到不同的控制器吗。这是我的bin文件代码

var-app=需要“../app”; var debug=require'debuguserservice:server'; var http=require'http'; /** *从环境中获取端口并存储在Express中。 */ var port=normalizePortprocess.env.port | |“3015”; 应用程序设置“端口”,端口; /** *创建HTTP服务器。 */ var server=http.createServerapp; var io=require'socket.io'服务器; io.on'connection',socket=>{ console.log“已建立连接”,socket.id; socket.on'disconnect',=>{ console.log“连接已断开”,socket.id; }; }; /** *在提供的端口、所有网络接口上侦听。 */ server.listenport; 服务器。在'error'上,onError;
服务器。在“侦听”上,联机侦听 有很多技术可用于重用套接字实例,一个简单易行的方法是创建一个单一类,以便能够:

启动套接字实例 将实例导出到其他模块 socket.js:

server.js:

现在,您可以在其他模块中使用它


有很多技术可用于重用套接字实例,一个简单易行的方法是创建一个单一类,以便能够:

启动套接字实例 将实例导出到其他模块 socket.js:

server.js:

现在,您可以在其他模块中使用它


您只需创建一个socket.io控制器模块,该模块导出为每个新连接调用的函数

因此,在当前服务器文件中,添加以下内容:

const {socketConnected} = require('socketController.');
并且,您可以修改此部分,以便为每个新套接字调用它:

var server = http.createServer(app);
var io = require('socket.io')(server);
io.on('connection', (socket) => {
  console.log('Connection made #######################################################.', socket.id);
  // tell controller about new socket (and pass the io instance)
  socketConnected(socket, io);
  socket.on('disconnect', () => {
    console.log('Connection disconnected @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.', socket.id);
  });
});
然后,您的套接字控制器可以如下所示:

module.exports.socketConnected = function(socket, io) {
    // new socket.io socket connected
    console.log(`controller: got socket.io connection ${socket.id}`);

    // register appropriate event handlers on the socket here
}

您只需创建一个socket.io控制器模块,该模块导出为每个新连接调用的函数

因此,在当前服务器文件中,添加以下内容:

const {socketConnected} = require('socketController.');
并且,您可以修改此部分,以便为每个新套接字调用它:

var server = http.createServer(app);
var io = require('socket.io')(server);
io.on('connection', (socket) => {
  console.log('Connection made #######################################################.', socket.id);
  // tell controller about new socket (and pass the io instance)
  socketConnected(socket, io);
  socket.on('disconnect', () => {
    console.log('Connection disconnected @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.', socket.id);
  });
});
然后,您的套接字控制器可以如下所示:

module.exports.socketConnected = function(socket, io) {
    // new socket.io socket connected
    console.log(`controller: got socket.io connection ${socket.id}`);

    // register appropriate event handlers on the socket here
}

请接受正确答案以便问题得到解决。请接受正确答案以便问题得到解决。你说的getio是什么意思?const io=require'/socket.js'.getio@AmineZel谢谢你的指点,可能是个错误,答案已经编辑好了你说的getio是什么意思?const io=require'/socket.js'.getio@AmineZel感谢您的指点,可能是个错误,答案已编辑