Polling lungo in Mochiweb - Come sapere se la richiesta di interrompere la cliente?
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?
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ò.