- Serwer internetowy jest uruchomiony w aplikacji node.js. Określa to, jak długo węzeł pozostawi otwarte połączenie z żądaniem klienta bez ruchu przed zamknięciem z powodu bezczynności limitu czasu. Przykładem jest to, że użytkownik traci moc w swoim domu podczas pobierania dużego pliku z aplikacji. Ustawiasz to raz i będzie to dotyczyło wszystkich połączeń klientów, które otrzymuje twój serwer.
- Jest to żądanie wychodzące z programu węzła na zdalny serwer WWW. Więc piszesz skrobak, aby pobrać plik i twoje połączenie internetowe umiera podczas pobierania. Określa, kiedy węzeł ostatecznie rezygnuje z oczekiwania na dane ze strony zdalnej. Będzie to miało wpływ tylko na konkretne żądanie, ponieważ podstawowe połączenie TCP zostanie zamknięte, a każde wychodzące żądanie otrzyma wyraźne połączenie TCP.
- Ponieważ żądanie HTTP i odpowiednia odpowiedź występują przez to samo podstawowe gniazdo TCP, moje zrozumienie to
req.setTimeout
i res.setTimeout
ostatecznie doprowadzi do tego samego podstawowego wywołania systemowego, które ustawia limit czasu na samym gniazdku TCP za pomocą odpowiednich wywołań libuv/os. Sądzę więc, że oba są równoważne, a ty możesz, niezależnie od tego, który z nich jest wygodniejszy, lub którykolwiek z nich wydaje ci się semantycznie bardziej przejrzysty. Mogę się mylić, jeśli tak, jeśli ktokolwiek wie, z pewnością możesz mnie poprawić.
Ogólnie wartości domyślne są uzasadnione. Możesz jednak ustawić je dłużej, jeśli wiesz, że masz wielu klientów na bardzo wolnych lub płatnych połączeniach (obsługujesz telefony komórkowe w odległych miejscach lub na satelitach itp.), A połączenia, które w rzeczywistości były nadal opłacalne, są zamykane z powodu koniec czasu. Możesz ustawić je krótsze, jeśli wiesz, że twoi klienci są dobrze połączeni (jak serwery w tym samym centrum danych) i chcesz bardziej agresywnie uwolnić zasoby.
Dzięki! Chciałbym poznać jakikolwiek wgląd na # 3 i zrobię kilka testów, żeby sprawdzić, czy mogę stwierdzić, czy jest jakaś różnica –