как реализовать промежуточное программное обеспечение в сокете.io нравится выражать в NodeJS?

#node.js #socket.io

#node.js #socket.io

Вопрос:

Как реализовать промежуточное программное обеспечение, подобное этому, в socket.io ? Пожалуйста, помогите

ЭКСПРЕСС-ПРИЛОЖЕНИЕ

 var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

app.use(myLogger)

app.get('/', function (req, res) {
  res.send('Hello World!')
})
 

ПРИЛОЖЕНИЕ СОКЕТА (я использую шаблон express, но он не работает)

 var myLogger = function (data,next) {
  console.log('DOING DATA VALIDATION...')
  next()
}

io.use(myLogger)

io.on('someEvent/', function (data, callback) {
  callback('Hello World!')
})
 

Ошибка: next() не определяется!

Комментарии:

1. Сокет. промежуточная функция ввода-вывода запускается только один раз за соединение. Итак, это не лучшее место для прямой проверки данных. Он получает сокет соединения и следующий обратный вызов; например io.use( (socket, next) => { ... } ). Пример приложения express не нужен, это не поможет нам помочь вам. Вместо этого покажите нам реальное сообщение об ошибке и полный код приложения сокета. Возможно, вы сделали что-то не так. (импорт, инициализация ввода-вывода, …) И, конечно, приложение СОКЕТА должно быть на стороне сервера. Больше информации здесь: socket.io/docs/v3/middlewares

Ответ №1:

 app.use(function (req, res, next) {
    req.io = io;
    next();
});
 

Это присваивает объект сокета каждому запросу.