Socket.io 用于特定端点的套接字IO中间件

Socket.io 用于特定端点的套接字IO中间件,socket.io,middleware,Socket.io,Middleware,我知道,通过express http request,您可以向特定端点添加中间件,如下所示: function someFunc(req, res, next) { // some stuff next() } app.get('/users', someFunc, (req, res) => { res.send('data stuff')}) 我希望通过SocketIO实现类似的功能,因为我所发现的只是使用socket.usefn函数,但这适用于所有请求。我想要一些

我知道,通过express http request,您可以向特定端点添加中间件,如下所示:

function someFunc(req, res, next) {
    // some stuff
    next()
}

app.get('/users', someFunc, (req, res) => { res.send('data stuff')})
我希望通过SocketIO实现类似的功能,因为我所发现的只是使用socket.usefn函数,但这适用于所有请求。我想要一些像:

function someFunc(data, next) {
    // some stuff
    next()
}

socket.on('users', someFunc, data => {/*do something*/})

有什么办法可以做到这一点?或者类似的东西?

据我所知,没有办法做到这一点,但也许您可以通过回调将数据传递给该函数,然后像那样使用它

函数someFuncdata,回调{ 放过=假; //用数据做你的东西。 如果通过{ //再次将数据传递给回调或已编辑的回调 回调数据; } } socket.onuser,data=>someFuncdata,回调; socket.onother,data=>someFuncdata,回调; ... socket.on另一个,data=>someFuncdata,editedData=>{ console.logeditedData; };
也许你可以用这样的东西?

是的,我也认为这样的东西就是答案。不过,如果您想按顺序插入多个中间件,我觉得这并不理想,因为它们都是嵌套的。基本上只是为了代码可读性。是的,我知道它对于多个中间件来说并不理想,但对于一个中间件来说,它是很好的。我想我们可以做的是检查EventEmitter上的函数,并像绑定functionsyeah时的express那样在其上写入,我在NodeJS github页面上将其作为功能请求放置,以便能够在EventEmitter上放置多个函数。但是,是的,我认为覆盖函数是暂时的解决方案。希望它能很容易实现。哦,你真好:。可能为此目的创建一个npm包?:我在这里的节点中添加了功能请求