Nella mia applicazione mochiweb, sto usando una richiesta HTTP da molto tempo. Ho voluto rilevare quando il collegamento con l'utente è morto, e ho capito come fare che facendo:Rilevamento della chiusura HTTP usando inet
Socket = Req:get(socket),
inet:setopts(Socket, [{active, once}]),
receive
{tcp_closed, Socket} ->
% handle clean up
Data ->
% do something
end.
Questo funziona quando: utente chiude la sua scheda/browser o aggiorna la pagina. Tuttavia, quando la connessione Internet muore improvvisamente (ad esempio, il segnale wifi si interrompe all'improvviso), o quando il browser si arresta in modo anomalo, non sono in grado di rilevare una chiusura tcp.
Mi manca qualcosa o esiste un altro modo per raggiungere questo obiettivo?
Ho considerato l'utilizzo della clausola after, ma in questo caso, il mio processo potrebbe essere un processo di ibernazione. La clausola after funzionerebbe ancora per un processo di ibernazione? – jeffreyveon
No, non lo farebbe. Un processo di ibernazione si attiva quando viene inviato un messaggio. Non vi è alcun timeout di sospensione, quindi invia un messaggio in ritardo per svegliarti. – Christian