En mi aplicación mochiweb, estoy usando una solicitud HTTP largamente retenida. Quería detectar cuando la conexión con el usuario murió, y me di cuenta de cómo hacer que al hacer:Detectando HTTP close usando inet
Socket = Req:get(socket),
inet:setopts(Socket, [{active, once}]),
receive
{tcp_closed, Socket} ->
% handle clean up
Data ->
% do something
end.
Esto funciona cuando: el usuario cierra su pestaña/navegador o actualiza la página. Sin embargo, cuando la conexión a Internet muere repentinamente (digamos que la señal wifi se pierde de repente), o cuando el navegador falla de manera anormal, no puedo detectar un tcp cercano.
¿Me falta algo, o hay alguna otra forma de lograrlo?
Consideré usar la cláusula posterior, pero en este caso, mi proceso podría ser un proceso de hibernación. ¿Seguiría funcionando la cláusula posterior para un proceso de hibernación? – jeffreyveon
No, no lo haría. Un proceso de hibernación se activa cuando se le envía un mensaje. No hay un tiempo de espera de hibernación, por lo que debe recibir un mensaje demorado para que se despierte. – Christian