Socket.io命名空间和服务器不共享中间件?

我为我的socket.io/express应用程序创build了一些护照authentication中间件。 看起来像:

io.use(function (socket, next) { var data = cookie.parse(socket.handshake.headers.cookie); var sessionID = cookieParser.signedCookie(data['connect.sid'], 'my balonga has a first name'); sessionStore.get(sessionID, function (err, data) { if (err) next(err); socket.handshake.passport = data.passport; next(); }); }); 

它工作得很好,但我有一个名称空间,它似乎使用不同的套接字。 这是否意味着我必须为每个名称空间重用我的中间件?

我注意到,我连接到我的命名空间,它调用基础服务器的中间件,然后命名空间,这意味着,如果我在两个地方包括中间件,我做了两个我需要的操作。 我可以在不删除基础层中间件的情况下防止这种情况发生吗? 这些都不是应用程序的破坏者,但它会改变我的架构一点,我担心我会在某个时候authentication差距。

概要:

  • 我必须为每个名称空间重用我的中间件吗?
  • 在连接到名称空间的情况下,是否可以防止在不移除基础层中间件的情况下调用默认名称空间中间件?