私の mochiweb アプリケーションでは、長い間保持されていた HTTP リクエストを使用しています。ユーザーとの接続がいつ切断されたかを検出したかったので、次のようにしてそれを行う方法を見つけました。
Socket = Req:get(socket),
inet:setopts(Socket, [{active, once}]),
receive
{tcp_closed, Socket} ->
% handle clean up
Data ->
% do something
end.
これは、ユーザーがタブ/ブラウザを閉じるか、ページを更新した場合に機能します。ただし、インターネット接続が突然切断された場合 (たとえば、wifi 信号が突然失われた場合)、またはブラウザーが異常にクラッシュした場合、tcp の終了を検出できません。
何か不足していますか、それともこれを達成する他の方法はありますか?