Behandlung eines Socket-Aufhängefehlers in Node.js normalerweise


Beste Antwort

Socket-Aufhängefehler sind normalerweise Fehler, wenn Anfragen an Ihren Server mehr als möglich sind Griff. Dies kann verschiedene Gründe haben, z. B. weil Ihr Server einen anderen Server anruft. Möglicherweise handelt es sich um eine Datenbank, die langsam reagiert und daher lange auf eine Antwort wartet. In der Zwischenzeit häufen sich andere Anforderungen usw.

  1. Schließen Sie die Verbindung, wenn Sie nach Abschluss Ihrer Arbeit eine Verbindung zur Datenbank hergestellt haben. In den meisten Fällen ist dies der Grund.
  2. Sie können dies mithilfe von Async- oder Promise- und SetTimeOut-Konzepten behandeln, die Ihren Server dazu bringen, eine bestimmte Zeit auf eine Antwort zu warten. Wenn dies zu lange dauert, kehren Sie einfach mit zurück Eine Fehlermeldung.
  3. Sie können mehrere Instanzen Ihrer Anwendung auf dem Server erstellen und jede Instanz behandelt Anforderungen separat.
  4. Auch wenn Sie ein kleines Dienstprogramm entwickeln, können Sie es so ändern, dass es ausgelöst wird begrenzte Anforderungen nach einem bestimmten Intervall.

Antwort

In zwei Fällen wird ein Fehler beim Auflegen des Sockets ausgelöst. Wenn Sie ein Client sind & Wenn Sie ein Server / Proxy sind

Wenn Sie als Client eine Anfrage an einen Remote-Server senden und keine rechtzeitige Antwort erhalten. Ihr Socket ist beendet, was diesen Fehler ausgelöst hat. Sie sollten diesen Fehler abfangen und entscheiden, wie er behandelt werden soll: ob Sie die Anforderung erneut versuchen, für später in die Warteschlange stellen usw.

Wenn Sie als Server, möglicherweise als Proxyserver, eine Anforderung von einem Client erhalten, dann Beginnen Sie damit, darauf zu reagieren (oder leiten Sie die Anforderung an den Upstream-Server weiter), und bevor Sie die Antwort vorbereitet haben, beschließt der Client, die Anforderung abzubrechen / abzubrechen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.