views:

47

answers:

2

This should work if multiple windows are open.

My application is in J2EE.

I already tried some javascript like on window.unloadn but this kind of solution is not solid.

+4  A: 

If you mean on the server side, the best way is to implement a heartbeat. If none of the windows from this webapp are open, nothing sends a heartbeat, and a server after some time will know the app is disconnected.

If you mean on the client side, there's no 100% reliable way, since the browser might die from external causes (kill/crash/reboot), but a timed-out cookie that is updated regularly in a heartbeat-like fashion might work

DVK
+3  A: 

HTTP is a stateless, meaning you can't tell when a browser is closed.

Your attempt to use window.onunload does not always work because the browser could exit before executing your event handler.

The technology used to find out if a user has closed their browser (or a best guess) is to use timeouts. Sessions will automatically timeout (this is configurable) - in asp.net the default is 20 minutes. If there is no activity, the timeout kicks in.

Oded