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