提问者:小点点

socket.io中间件,io.use


在一个基于expressJS和Socket.io构建的web应用程序上工作。在下面的文章中,我看到了中间件语法的用法,这对我来说是新的。下面是一个语法示例:

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实例上使用中间件函数。我以前的理解是,中间件只能在express实例(app.use(...))上使用。

  1. 此语法是否只是与app.use(。。。)工作方式类似的常规中间件?
  2. 如果不同,有什么不同?

共1个答案

匿名用户

IO.use()允许您指定为每个新的,传入的Socket.IO连接调用的函数。它可以用于各种各样的事情,例如:

  1. 日志
  2. 身份验证
  3. 管理会话
  4. 速率限制
  5. 连接验证

等等。。。

它的用途类似于Express中间件(类似于app.use()),但这是用于传入的socket.io连接,而不是传入Express管理的常规http请求。如果希望中间件处理传入的http请求,请使用带有app.use()的Express中间件。如果希望中间件处理传入的socket.io连接,请使用带有io.use()的socket.io中间件。