使用基于expressJS和Socket.io构建的Web应用程序。 在the following post我看到了中间件语法的使用,这对我来说是新的。以下是语法示例:
const io = require('socket.io')();
io.use(function(socket, next) {
// execute some code
next();
})
.on('connection', function(socket) {
// Connection now authenticated to receive further events
socket.on('message', function(message) {
io.emit('message', message);
});
});
它基本上使用socket.io
实例上的中间件函数。我之前的理解是middlware只能用于快速实例(app.use(...)
)。
app.use(...)
的工作方式类似吗?答案 0 :(得分:4)
io.use()
允许您指定为每个新的传入socket.io连接调用的函数。它可用于各种各样的事情,例如:
等等......
它的目的类似于Express中间件(与app.use()
类似),但这是针对传入的socket.io连接,而不是传入Express管理的常规http请求。如果您希望中间件处理传入的http请求,请使用带有app.use()
的Express中间件。如果您希望中间件处理传入的socket.io连接,请使用带有io.use()
的socket.io中间件。