Polling lungo in Mochiweb - Come sapere se la richiesta di interrompere la cliente?

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

  •  29-09-2019
  •  | 
  •  

Domanda

Ho un ciclo di base di polling mochiweb che appare come il seguente, se non fa altre cose, invece di stampare alla console e alla fine ritorna:

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

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

Questa grande opera finché il client interrompe la loro richiesta. Ad esempio se la finestra del client è chiuso, questo processo continua a funzionare a tempo indeterminato.

vorrei sapere se c'è un'opzione in avvio di mochiweb () o forse qualcos'altro che sto con vista che avrebbe mochiweb terminerà automaticamente questo processo, o almeno inviare un messaggio su di interruzione client. Tutte le idee?

È stato utile?

Soluzione

appare come una soluzione è la creazione di un altro processo a gen_tcp:recv(Req:get(socket), 0, 1) ripetutamente chiamata e cercando il risultato {error, closed}, poi uccidere il processo di polling, quando lo si ... Non sono sicuro se questo è ottimale però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top