Lange Polling in Mochiweb - Wie kann man sagen, wenn der Client Abbrüchen anfordern?

StackOverflow https://stackoverflow.com/questions/3097453

  •  29-09-2019
  •  | 
  •  

Frage

Ich habe eine grundlegende mochiweb Abfrageschleife, dass sieht wie folgt aus, außer es andere Dinge tut, anstatt Druck auf die Konsole und schließlich kehrt:

blah() -> 
  io:format("Blah")
  blah()

loop(Req) ->
  PathParts = string:tokens(Req:get(path), "/")
  case PathParts of
    ["poll"] -> 
      blah()

Dies funktioniert gut, bis der Kunde seine Anfrage abbricht. Zum Beispiel, wenn die Client-Fenster geschlossen ist, hält dieser Prozess auf unbestimmte Zeit ausgeführt wird.

Ich würde gerne wissen, ob es eine Option in mochiweb start () oder vielleicht etwas, das ich mit Blick auf bin, dass mochiweb haben würde diesen Prozess automatisch beendet oder zumindest eine Nachricht auf dem Client abbrechen senden. Irgendwelche Ideen?

War es hilfreich?

Lösung

Sieht aus wie ein Lösung wird ein weiteres Verfahren zum wiederholten Aufruf gen_tcp:recv(Req:get(socket), 0, 1) Einrichtung und die Suche nach dem Ergebnis {error, closed}, dann den Abfrageprozess zu töten, wenn er empfangen wird ... Nicht sicher, ob die optimale though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top