2009-04-15 3 views
0

Ich brauche eine Möglichkeit, eine fehlende Antwort auf eine lange laufende HTTP-POST-Anfrage zu erkennen. Dieses Problem tritt auf, wenn die Netzwerkinfrastruktur (Firewalls, Proxies, unplugged Kabel usw.) die Antwortpakete ablegt. Der Server erkennt diesen Fehler möglicherweise, aber der Client kann nach dem POST keine weiteren Bytes senden, um den Status der TCP-Verbindung zu ermitteln. Der Fehler kann auf eine einzelne TCP-Verbindung beschränkt sein. Zum Beispiel kann ich möglicherweise später eine neue TCP-Verbindung zum Server öffnen.Erkennen fehlender Antworten auf lange laufende HTTP (SOAP) Anfragen

Ich bin auf der Suche nach einer Lösung, die immer noch HTTP-POST verwendet und die Dauer der serverseitigen Verarbeitung nicht ändert.

Einige Lösungen, die ich denken kann, sind:

  1. eine Seitenkanal-Schnittstelle Geben Sie Anfrage & Antwort Geschichte abzurufen. Wenn der Verlauf die Antwort als gesendet anzeigt (was vermutlich zu einem TCP-Fehler führt), aber ich ihn innerhalb einer vernünftigen Zeit noch nicht erhalten habe, kann ich einen lokalen Fehler erzeugen.

  2. Verwenden Sie eine X-Kopfzeile, um anzufordern, dass der Server "unecht" liefert 100 Setzen Sie die vorläufigen Antworten in regelmäßigen Abständen fort. Wenn eine erwartete 100 Continue oder eine nicht provisorische Antwort nicht angezeigt wird, kann ich einen lokalen Fehler generieren.

Gibt es eine Lösung auf dem neuesten Stand der Technik für dieses Problem?

+0

Wie lange ist lang? – FlySwat

Antwort

0

Es klingt für mich, als ob Sie Soap für etwas verwenden, das mit einer Stateful-Verbindung oder einer serverseitigen Push-Technologie viel besser erledigt werden könnte.

+0

Ja. Es sieht so aus als wäre "State of the Art" "mach das nicht". –