如何将所有 socket.io 分隔到不同的文件
How to separate all of socket.io to a different file
现在,我有 app.js,其中有我的常用代码和我的 socket.io 代码。但我想做的是,将 socket.io 的每个代码分成 1 个不同的文件,并要求将来自不同文件的 socket.io 代码放入我的主 app.js 中。有什么办法可以将 2/3 行代码写入我的 app.js 以从不同的文件中获取 socket.io?
注意:我不想将我的任何 socket.io 代码写入我的 app.js 所以我不知道是否可以 require('....') 它从另一个文件进入我的app.js。理想情况下希望将 io.on('connection'){}
内的所有内容分开
const express = require('express');
const http = require('http'); // socket.io is created upon http server. A way to create server
const cors = require('cors');
const {Server} = require('socket.io');
const app = express();
app.use(cors());
const server = http.createServer(app); // this is to create http server with express for socket.io
const io = new Server(server, {
cors: {
origin: "http://localhost:3000",
methods: ["GET", "POST"]
}
});
io.on("connection", (socket) => {
socket.on("newUser", (username) => {
addNewUser(username, socket.id);
console.log('connect print: '); printUsers();
})
socket.on("disconnect", () => {
removeUser(socket.id);
console.log('disconnect print: '); printUsers();
});
})
server.listen(3001, () => {
console.log('server listening on port 3001');
})
有几种方法可以做到这一点,但像下面这样的方法应该可行。
在您的新文件中,使用 module.exports
导出包含您要导出的任何函数或对象的对象:
//socketio.js
module.exports = {
getIo: (server) => {
const io = new Server(server, {
//...
});
io.on("connection", (socket) => {
//...
}
//your other functions
return io;
}
}
然后在您的 app.js 中要求它并使用对象的属性:
//app.js
const socketio = require('./socketio.js');
//after creating your server etc
const io = socketio.getIo(server);
现在,我有 app.js,其中有我的常用代码和我的 socket.io 代码。但我想做的是,将 socket.io 的每个代码分成 1 个不同的文件,并要求将来自不同文件的 socket.io 代码放入我的主 app.js 中。有什么办法可以将 2/3 行代码写入我的 app.js 以从不同的文件中获取 socket.io?
注意:我不想将我的任何 socket.io 代码写入我的 app.js 所以我不知道是否可以 require('....') 它从另一个文件进入我的app.js。理想情况下希望将 io.on('connection'){}
内的所有内容分开const express = require('express');
const http = require('http'); // socket.io is created upon http server. A way to create server
const cors = require('cors');
const {Server} = require('socket.io');
const app = express();
app.use(cors());
const server = http.createServer(app); // this is to create http server with express for socket.io
const io = new Server(server, {
cors: {
origin: "http://localhost:3000",
methods: ["GET", "POST"]
}
});
io.on("connection", (socket) => {
socket.on("newUser", (username) => {
addNewUser(username, socket.id);
console.log('connect print: '); printUsers();
})
socket.on("disconnect", () => {
removeUser(socket.id);
console.log('disconnect print: '); printUsers();
});
})
server.listen(3001, () => {
console.log('server listening on port 3001');
})
有几种方法可以做到这一点,但像下面这样的方法应该可行。
在您的新文件中,使用 module.exports
导出包含您要导出的任何函数或对象的对象:
//socketio.js
module.exports = {
getIo: (server) => {
const io = new Server(server, {
//...
});
io.on("connection", (socket) => {
//...
}
//your other functions
return io;
}
}
然后在您的 app.js 中要求它并使用对象的属性:
//app.js
const socketio = require('./socketio.js');
//after creating your server etc
const io = socketio.getIo(server);