Да, чтобы выполнить функцию для каждого сообщения сокета, используйте это:
io.on('connection', (socket) => {
socket.use((packet, next) => {
if (packet.doge === true) return next();
next(new Error('Not a doge error'));
});
});
Для промежуточного программного обеспечения, которое будет работать только при начальном соединении сокета, используйте это:
io.use((socket, next) => {
if (socket.request.headers.cookie) return next();
next(new Error('Authentication error'));
});
Посмотрите на документы, это довольно хорошо: https://socket.io/docs/server-api/