在server / app.js以外的路由中使用socket.io

您好我想在一个文件中使用socket.io而不是我的主server.js文件,我首先设置它像这样:

const app = require('express')(); const http = require('http').createServer(app); const mongoose = require('mongoose'); const io = require('socket.io')(http); io.on('connection', (socket) => { console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); }); }); 

由于我在我的server.js文件中设置它,所以我必须监听这个文件中的事件,因此callback函数只能访问这个文件的范围。 然而,我需要在我设置的路由中的另一个文件中使用它,例如:

 app.use('/', home); 

我已经读了这个和这个 ,都没有帮助过我。

谢谢。

把你的套接字逻辑写在一个函数内的另一个文件中,并从server.js中调用它。

socket.js

 const io = require('socket.io'); module.exports = function(server) { io(server).on('connection', (socket) => { console.log('a user connected'); socket.on('disconnect', () => { console.log('user disconnected'); }); }); } 

server.js中

 const app = require('express')(); const http = require('http').createServer(app); const mongoose = require('mongoose'); require("./socket")(http)