Socket.IO中间件,io.use

时间:2018-04-24 14:05:39

标签: javascript node.js express websocket socket.io

使用基于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(...))。

问题:

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

1 个答案:

答案 0 :(得分:4)

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

  1. 登录
  2. 验证
  3. 管理会话
  4. 限速
  5. 连接验证
  6. 等等......

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