#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();
});
Это присваивает объект сокета каждому запросу.