2010-06-22 4 views
4

J'ai une boucle d'interrogation de base mochiweb qui ressemble à ce qui suit, sauf qu'il fait d'autres choses au lieu d'imprimer à la console et finalement retourne:Interrogation longue dans Mochiweb - Comment savoir si le client abandonne la demande?

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

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

Cela fonctionne très bien jusqu'à ce que le client leur demande avorte. Par exemple, si la fenêtre du client est fermée, ce processus continue indéfiniment.

Je voudrais savoir s'il y a une option dans start() de mochiweb ou peut-être quelque chose d'autre que mochiweb mettrait fin automatiquement à ce processus, ou au moins enverrait un message sur l'abandon du client. Des idées?

Répondre

0

On dirait une solution met en place un processus d'appeler à plusieurs reprises gen_tcp:recv(Req:get(socket), 0, 1) et à la recherche du résultat {error, closed}, puis tuer le processus de vote si elle est reçue ... Je ne sais pas si c'est optimal bien.

Questions connexes