2014-10-21 10 views
9

Jeśli chodzi o limit czasu żądania HTTP, wygląda node.js posiada trzy oddzielne limity czasu:Różnica między node.js HTTP Server Zapytanie i odpowiedź Timeouts

  1. server.setTimeout http://nodejs.org/api/http.html#http_server_settimeout_msecs_callback
  2. żądanie .setTimeout http://nodejs.org/api/http.html#http_request_settimeout_timeout_callback
  3. response.setTimeout http://nodejs.org/api/http.html#http_response_settimeout_msecs_callback

Może ktoś wyjaśnić, jaka jest różnica między każdym z tych metod i wh y ktoś chciałby użyć każdego?

Odpowiedz

13
  1. 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.
  2. 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.
  3. 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.

+0

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 –

Powiązane problemy