-
-
Notifications
You must be signed in to change notification settings - Fork 750
Detecting Browser close's situation when using long polling
tehnicaorg edited this page Dec 30, 2013
·
5 revisions
When the transport is set to long-polling, the AtmosphereResourceEventListener#onDisconnect will be called when:
- the long-polling connection is resumed.
- when the browser's window/tab is closed or when the user move to another page.
To differentiate the two scenarios and act accordingly, the following is required
Enable the Atmosphere's protocol:
var request = { url: document.location.toString() + 'chat',
transport : 'long-polling' ,
enableProtocol : true
};
request.onClose(response) {
if (response.state == "unsubscribe") {
// Tab/window closed
}
}
Inside your AtmosphereResourceEventListener#onDisconnect, do:
@Override
public void onDisconnect(AtmosphereResourceEvent event) {
String transport = event.getResource().getRequest().getHeader(HeaderConfig.X_ATMOSPHERE_TRANSPORT);
if (transport != null && transport.equalsIgnoreCase(HeaderConfig.DISCONNECT)) {
// Scenario 2: Browser closed the connection
} else {
// Scenario 1: Long-Polling Connection resumed.
}
}
You can also install the SuspendTrackerInterceptor for unifying transport behavior.
- Understanding Atmosphere
- Understanding @ManagedService
- Using javax.inject.Inject and javax.inject.PostConstruct annotation
- Understanding Atmosphere's Annotation
- Understanding AtmosphereResource
- Understanding AtmosphereHandler
- Understanding WebSocketHandler
- Understanding Broadcaster
- Understanding BroadcasterCache
- Understanding Meteor
- Understanding BroadcastFilter
- Understanding Atmosphere's Events Listeners
- Understanding AtmosphereInterceptor
- Configuring Atmosphere for Performance
- Understanding JavaScript functions
- Understanding AtmosphereResourceSession
- Improving Performance by using the PoolableBroadcasterFactory
- Using Atmosphere Jersey API
- Using Meteor API
- Using AtmosphereHandler API
- Using Socket.IO
- Using GWT
- Writing HTML5 Server-Sent Events
- Using STOMP protocol
- Streaming WebSocket messages
- Configuring Atmosphere's Classes Creation and Injection
- Using AtmosphereInterceptor to customize Atmosphere Framework
- Writing WebSocket sub protocol
- Configuring Atmosphere for the Cloud
- Injecting Atmosphere's Components in Jersey
- Sharing connection between Browser's windows and tabs
- Understanding AtmosphereResourceSession
- Manage installed services
- Server Side: javadoc API
- Server Side: atmosphere.xml and web.xml configuration
- Client Side: atmosphere.js API