Class: ClientListener

ClientListener

Interface to be implemented to listen to LightstreamerClient events comprehending notifications of connection activity, errors and sharing-related events.
Events for these listeners are executed asynchronously with respect to the code that generates them. This means that, upon reception of an event, it is possible that the current state of the client has changed furtherly.
Note that it is not necessary to implement all of the interface methods for the listener to be successfully passed to the LightstreamerClient#addListener method.
A ClientListener implementation is distributed together with the library: StatusWidget.

new ClientListener()

This is a dummy constructor not to be used in any case.

Method Summary

onListenEnd
Event handler that receives a notification when the ClientListener instance is removed from a LightstreamerClient through LightstreamerClient#removeListener.
onListenStart
Event handler that receives a notification when the ClientListener instance is added to a LightstreamerClient through LightstreamerClient#addListener.
onPropertyChange
Event handler that receives a notification each time the value of a property of LightstreamerClient#connectionDetails or LightstreamerClient#connectionOptions is changed.
onServerError
Event handler that is called when the Server notifies a refusal on the client attempt to open a new connection or the interruption of a streaming connection.
onShareAbort
Event handler that receives a notification in case a connection sharing is aborted.
onStatusChange
Event handler that receives a notification each time the LightstreamerClient status has changed.

Method Detail

onListenEnd(lsClient)

Event handler that receives a notification when the ClientListener instance is removed from a LightstreamerClient through LightstreamerClient#removeListener. This is the last event to be fired on the listener.
Parameters:
Name Type Description
lsClient LightstreamerClient the LightstreamerClient this instance was removed from.

onListenStart(lsClient)

Event handler that receives a notification when the ClientListener instance is added to a LightstreamerClient through LightstreamerClient#addListener. This is the first event to be fired on the listener.
Parameters:
Name Type Description
lsClient LightstreamerClient the LightstreamerClient this instance was added to.

onPropertyChange(the)

Event handler that receives a notification each time the value of a property of LightstreamerClient#connectionDetails or LightstreamerClient#connectionOptions is changed.
Properties of these objects can be modified by direct calls to them, but also by calls performed on other LightstreamerClient instances sharing the same connection and by server sent events.
Parameters:
Name Type Description
the String name of the changed property.
Possible values are:
  • adapterSet
  • serverAddress
  • user
  • password
  • serverInstanceAddress
  • serverSocketName
  • sessionId
  • contentLength
  • idleMillis
  • keepaliveMillis
  • maxBandwidth
  • pollingMillis
  • reconnectTimeout
  • stalledTimeout
  • connectTimeout
  • retryDelay
  • firstRetryMaxDelay
  • slowingEnabled
  • forcedTransport
  • serverInstanceAddressIgnored
  • cookieHandlingRequired
  • reverseHeartbeatMillis
  • earlyWSOpenEnabled
  • httpExtraHeaders
  • httpExtraHeadersOnSessionCreationOnly
See:

onServerError(errorCode, errorMessage)

Event handler that is called when the Server notifies a refusal on the client attempt to open a new connection or the interruption of a streaming connection. In both cases, no recovery attempts would be performed and the connection status would eventually switch to "DISCONNECTED". By setting a custom handler, however, it is possible to prevent this and perform custom recovery actions.
Parameters:
Name Type Description
errorCode Number The error code. It can be one of the following:
  • 1 - user/password check failed
  • 2 - requested Adapter Set not available
  • 7 - licensed maximum number of sessions reached (this can only happen with some licenses)
  • 8 - configured maximum number of sessions reached
  • 9 - configured maximum server load reached
  • 10 - new sessions temporarily blocked
  • 11 - streaming is not available because of Server license restrictions (this can only happen with special licenses)
  • 30-39 - the current connection or the whole session has been closed by external agents; the possible cause may be:
    • The session was closed by the administrator, through JMX (32) or through a "destroy" request (31);
    • The Metadata Adapter imposes limits on the overall open sessions for the current user and has requested the closure of the current session upon opening of a new session for the same user on a different browser window (35);
    • An unexpected error occurred on the Server while the session was in activity (33, 34);
    • An unknown or unexpected cause; any code different from the ones identified in the above cases could be issued.
    A detailed description for the specific cause is currently not supplied (i.e. errorMessage is null in this case).
  • <= 0 - the Metadata Adapter has refused the user connection; the code value is dependent on the specific Metadata Adapter implementation
errorMessage String The description of the error as sent by the Server.
See:

onShareAbort()

Event handler that receives a notification in case a connection sharing is aborted. A connection sharing can only be aborted if one of the policies specified in the ConnectionSharing#enableSharing method is "ABORT".
If this event is fired the client will never be able to connect to the server unless a new call to enableSharing is issued.
See:

onStatusChange(chngStatus)

Event handler that receives a notification each time the LightstreamerClient status has changed. The status changes may be originated either by custom actions (e.g. by calling LightstreamerClient#disconnect) or by internal actions.

The normal cases are the following:
  • After issuing connect(), if the current status is "DISCONNECTED*", the client will switch to "CONNECTING" first and to "CONNECTED:STREAM-SENSING" as soon as the pre-flight request receives its answer.
    As soon as the new session is established, it will switch to "CONNECTED:WS-STREAMING" if the browser/environment permits WebSockets; otherwise it will switch to "CONNECTED:HTTP-STREAMING" if the browser/environment permits streaming or to "CONNECTED:HTTP-POLLING" as a last resort.
    On the other hand if the status is already "CONNECTED:*" a switch to "CONNECTING" is usually not needed.
  • After issuing disconnect(), the status will switch to "DISCONNECTED".
  • In case of a server connection refusal, the status may switch from "CONNECTING" directly to "DISCONNECTED". Before that, however, the ClientListener#onServerError event handler would be invoked.

Possible special cases are the following:
  • In case of Server unavailability during streaming, the status may switch from "CONNECTED:*-STREAMING" to "STALLED" (see ConnectionOptions#setStalledTimeout). If the unavailability ceases, the status will switch back to ""CONNECTED:*-STREAMING""; otherwise, if the unavailability persists (see ConnectionOptions#setReconnectTimeout), the status will switch to "CONNECTING" and eventually to "CONNECTED:*-STREAMING".
  • In case the connection or the whole session is forcibly closed by the Server, the status may switch from "CONNECTED:*-STREAMING" or "CONNECTED:*-POLLING" directly to "DISCONNECTED". Before that, however, the ClientListener#onServerError event handler would be invoked.
  • Depending on the setting in ConnectionOptions#setSlowingEnabled, in case of slow update processing, the status may switch from "CONNECTED:WS-STREAMING" to "CONNECTED:WS-POLLING" or from "CONNECTED:HTTP-STREAMING" to "CONNECTED:HTTP-POLLING".
  • If the status is "CONNECTED:*POLLING" and any problem during an intermediate poll occurs, the status may switch to "CONNECTING" and eventually to "CONNECTED:POLLING". The same holds for the "CONNECTED:STREAMING" case, when a rebind is needed.
  • In case a forced transport was set through ConnectionOptions#setForcedTransport, only the related final status or statuses are possible.
  • In case of connection problems the status may switch from any value to "DISCONNECTED:WILL-RETRY" (see ConnectionOptions#setRetryDelay).
  • In case the local LightstreamerClient is exploiting the connection of a different LightstreamerClient (see ConnectionSharing) and such LightstreamerClient or its container window is disposed, than the status will switch to "DISCONNECTED:WILL-RETRY" unless the current status is "DISCONNECTED". In the latter case it will remain "DISCONNECTED".

By setting a custom handler it is possible to perform actions related to connection and disconnection occurrences. Note that LightstreamerClient#connect and LightstreamerClient#disconnect, as any other method, can be issued directly from within a handler.
Parameters:
Name Type Description
chngStatus String The new status. It can be one of the following values:
  • "CONNECTING" the client has started a connection attempt and is waiting for a Server answer.
  • "CONNECTED:STREAM-SENSING" the client received a first response from the server and is now evaluating if a streaming connection is fully functional.
  • "CONNECTED:WS-STREAMING" a streaming connection over WebSocket has been established.
  • "CONNECTED:HTTP-STREAMING" a streaming connection over HTTP has been established.
  • "CONNECTED:WS-POLLING" a polling connection over WebSocket has been started. Note that, unlike polling over HTTP, in this case only one connection is actually opened (see ConnectionOptions#setSlowingEnabled).
  • "CONNECTED:HTTP-POLLING" a polling connection over HTTP has been started.
  • "STALLED" a streaming session has been silent for a while, the status will eventually return to its previous CONNECTED:*-STREAMING status or will switch to "DISCONNECTED:WILL-RETRY".
  • "DISCONNECTED:WILL-RETRY" a connection or connection attempt has been closed; a new attempt will be performed after a timeout.
  • "DISCONNECTED" a connection or connection attempt has been closed. The client will not connect anymore until a new LightstreamerClient#connect call is issued.
See: