У меня есть базовый сервер ExpressJS, который просто предназначен для регистрации IP-соединения и служит для статических страниц. Что происходит, когда я сам подключаюсь к нему, это то, что промежуточное программное обеспечение, которое регистрирует IP-запрос запроса, повторяется несколько раз. Если я удалю вызов до next()
, это остановится, но также предотвратит запуск промежуточного программного обеспечения, управляющего статическими страницами.Промежуточное приложение в приложении ExpressJS использует next() для вызова
код между сервером заключается в следующем:
var express = require('express');
app = express();
app.use(function(req, res, next) {
console.log('Received a connection from: ' + req.ip)
next();
})
app.use('/', express.static(__dirname + '/public'));
var port = 55671;
app.listen(port, function() {
console.log('Listening on: ' + port);
});
Если бы я только подключить один раз, это стандартный вывод:
Listening on: 55671
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Received a connection from: ::ffff:127.0.0.1
Я экспериментировал с различными порядками ППО, и я думал, что это работало ранее, но я могу вспомнить неправильно. Почему следующий() вызов вызывает одно промежуточное ПО несколько раз, прежде чем переходить на другой, а затем останавливаться?
Вы уверены, что это еще не все статическое содержимое? Имейте в виду, что вы регистрируете IP * перед тем, как вы обслуживаете какое-либо статическое содержимое, поэтому вы получите вывод на каждый статический файл. – James
Я обслуживаю довольно много файлов, так что это имеет смысл. Как я могу изменить это только один раз? Должен ли я использовать маршрутизатор, а не промежуточное ПО? – Cavejay
Это зависит от того, что именно вы имеете в виду, это работает как ожидалось, оно регистрирует IP * за запрос *. Вы спрашиваете, возможно ли зарегистрировать IP * на клиента * по первому запросу? – James