Pregunta

Tengo un bucle básico de votación mochiweb que tiene el siguiente aspecto, excepto que hace otras cosas en lugar de imprimir a la consola y, finalmente, devuelve:

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

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

Esto funciona muy bien hasta que el cliente cancela su petición. Por ejemplo, si la ventana del cliente está cerrado, este proceso sigue funcionando indefinidamente.

Me gustaría saber si hay una opción en el inicio de mochiweb () o tal vez algo más estoy pasando por alto que tendría mochiweb terminará automáticamente este proceso, o al menos enviar un mensaje en el aborto de cliente. Algunas ideas?

¿Fue útil?

Solución

Las apariencias como un solución es la creación de otro proceso para gen_tcp:recv(Req:get(socket), 0, 1) repetidamente llamada y buscando el {error, closed} resultado, entonces matar el proceso de votación, si se toma ... No estoy seguro de si eso es óptima sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top