2012-03-27 13 views
5

Ich versuche, einen HTTP-Long-Polling-Server in Node.js zu implementieren, und habe keine Ahnung, wie ausstehende Anforderungen geschlossen/geschlossen werden, wenn ein Timeout erreicht wird.Long polling in node.js - Wie 'Timeout' die ausstehenden Anfragen, wenn keine Daten verfügbar sind?

3 mögliche Lösungen kommen mir in den Sinn:

  1. Shop die pendingRequest mit einem Zeitstempel in einem Hash/Objekt, dann setIntervall nennen, so dass alle 1/2/x Sekunden die pendingRequests entfernt werden, wenn der Zeitstempel ist zu alt.
  2. setzte einen Timeout auf der Socket-Verbindung

Beiden Lösungen nicht sehr vernünftig erscheinen, also was der Node.js Weg wäre, so etwas zu erreichen?

Antwort

5

Warum klingen diese nicht vernünftig? Insbesondere auf dem Sockel ein Timeout Einstellung scheint mir sinnvoll zu machen, wie:

  1. Es gibt eine built-in method for doing so
  2. Ein Ereignis wird ausgelöst, wenn die Verbindung unterbrochen wird, so dass Sie alle notwendigen Bereinigung tun (zB end/destroy auf dem Sockel)

Aufruf ich wohl diesen Weg gehen würde, so dass Knoten Timeout hinter den Kulissen behandelt; Wenn es jedoch für Ihre App sinnvoll ist, sehe ich keinen Schaden darin, einen Zeitstempel zu behalten und Verbindungen manuell zu beenden.

Sie können in diesen Artikeln interessiert sein, von denen jede Griffe auslaufenden Verbindungen unterschiedlich: