Node.js Socket.IO 中间件

3
在node.js中,我们可以像这样向socket.io服务器添加一些中间件函数。
 io.use(function(socket, next) {
            var req = socket.handshake;
            var res = {};
            cookieParser(req, res, function(err) {
                if (err) return next(err);
                session(req, res, next);
            });
        });

我想知道是否可以像以下示例一样给简单的socket.on函数添加一些中间件功能。
io.sockets.on('connection', function(socket){
    socket.on('someSignal',
             function(data,next){/*middleware function code*/ next();},
             function(data){})
});

你知道每个请求都会经过一个中间件吗?所以你的第一个例子已经解决了你的问题。 - Marco
@Marco,我需要对特定组的套接字信号执行一些特殊操作,而不是全部执行。第一个示例为所有连接的套接字执行中间件函数。 - Vladyslav Nikolaiev
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - jfriend00
1个回答

1

emitter.on(event, listener)是emitter.addListener(event, listener)的别名。 如果您想这样做,每个请求通过该中间件都将添加一个事件监听器。


我必须一个接一个地调用监听器,甚至停止它的执行。使用这种方法是否可能? - Vladyslav Nikolaiev
你不应该手动调用监听器,Node.js事件循环会为你完成这个任务。 - BenHu
然而,如果您想向特定客户端发出事件,则可以使用:io.clients [sessionID] .send(),不确定这是否对您有帮助。 - BenHu
@胡学宾 我想要阻止事件循环执行一个或多个事件监听器,这取决于前一个事件监听器的结果。 (我需要为这些监听器创建瀑布模型) - Vladyslav Nikolaiev
为什么不把这个逻辑放在一个单一的监听器中呢?我的意思是,在监听器中,您可以随意执行一个或多个包装在函数中的逻辑。 - BenHu
看看这个:https://www.npmjs.com/package/composable-middleware 也许对你有用。 - BenHu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接