我Socket.io在Node.js服务器上实现www.example.com时遇到了一个问题,我有两个文件,一个包含中间件,另一个用于启动服务器并初始化套接字。
我遇到的问题是访问中间件中的套接字。我已经附加了我的代码,实际的中间件函数在user
导出中,而userSocket
导出只是用来在服务器文件中创建套接字。
我希望能够在user
中间件的sendMessage
方法中执行类似io.emit("message", message)
的操作,但是我的方法不能访问io
变量,如果可以,我不确定是否可以,因为服务器创建的套接字是基于userSocket
函数的。有没有办法在特定的中间件中处理套接字事件?
// this is the middleware file
const userSocket = (io) => {
io.on("connection", (socket) => {
socket.on("join-room", (id) => {
socket.join(id);
console.log(`user joined room ${id}`);
});
});
};
module.exports.userSocket = userSocket;
module.exports.user = {
sendMessage: // access the socket here
}
// this is the server file
const express = require("express");
const app = express();
const { createServer } = require("http");
const httpServer = createServer(app);
const port = 3000;
const io = require("socket.io")(httpServer, { cors: { origin: "*" } });
const { userSocket } = require("./resources/users/user");
userSocket(io);
httpServer.listen(port);
console.log(`Listening on port ${port}`);
1条答案
按热度按时间lbsnaicq1#
这是我为一个项目所做的工作:
在中间件中,您可以按如下方式使用它:
希望这对你有帮助