Class DefaultConnectionStateHandler

java.lang.Object
com.vaadin.client.communication.DefaultConnectionStateHandler
All Implemented Interfaces:
ConnectionStateHandler

public class DefaultConnectionStateHandler extends Object implements ConnectionStateHandler
Default implementation of the connection state handler.

Handles temporary errors by showing a reconnect dialog to the user while trying to re-establish the connection to the server and re-send the pending message.

Handles permanent errors by showing a critical system notification to the user

Since:
1.0
Author:
Vaadin Ltd
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected static enum 
     
  • Field Summary

    Fields inherited from interface com.vaadin.client.communication.ConnectionStateHandler

    UIDL_REFRESH_TOKEN
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new instance connected to the given registry.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Called when some part of the reconnect dialog configuration has been changed.
    protected void
    doReconnect(elemental.json.JsonObject payload)
    Re-sends the payload to the server (if not null) or re-sends a heartbeat request immediately.
    protected String
    getDialogText(int reconnectAttempt)
    Gets the text to show in the reconnect dialog.
    protected String
    getDialogTextGaveUp(int reconnectAttempt)
    Gets the text to show in the reconnect dialog after giving up (reconnect limit reached).
    protected final void
    Called when we should give up trying to reconnect and inform the user that the application is in CONNECTION_LOST state.
    protected void
    handleCommunicationError(String details, int statusCode)
    Called when a communication error occurs and we cannot recover from it.
    protected void
    handleRecoverableError(DefaultConnectionStateHandler.Type type, elemental.json.JsonObject payload)
    Called whenever an error occurs in communication which should be handled by showing the reconnect dialog and retrying communication until successful again.
    protected void
     
    void
    heartbeatException(com.google.gwt.xhr.client.XMLHttpRequest request, Exception exception)
    Called when an exception occurs during a Heartbeat request.
    void
    heartbeatInvalidStatusCode(com.google.gwt.xhr.client.XMLHttpRequest xhr)
    Called when a heartbeat request returns a status code other than OK (200).
    void
    Called when a Heartbeat request succeeds.
    void
    pushClientTimeout(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
    Called when a client side timeout occurs before a push connection to the server completes.
    void
    pushClosed(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
    Called when the push connection to the server is closed.
    void
    pushError(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
    Called when a fatal error fatal error occurs in the push connection.
    void
    pushInvalidContent(PushConnection pushConnection, String message)
    Called when invalid content (not JSON) was pushed from the server through the push connection.
    void
    pushNotConnected(elemental.json.JsonObject payload)
    Called when a message is to be sent to the server through the push channel but the push channel is not connected.
    void
    pushOk(PushConnection pushConnection)
    Called when the push connection to the server has been established.
    void
    Called when the push connection has lost the connection to the server and will proceed to try to re-establish the connection.
    void
    Called when the required push script could not be loaded.
    protected void
    scheduleReconnect(elemental.json.JsonObject payload)
    Called after a problem occurred.
    void
    xhrException(XhrConnectionError xhrConnectionError)
    Called when an exception occurs during an XmlHttpRequest request to the server.
    void
    Called when invalid content (not JSON) was returned from the server as the result of an XmlHttpRequest request.
    void
    Called when invalid status code (not 200) was returned by the server as the result of an XmlHttpRequest.
    void
    Called whenever a XmlHttpRequest to the server completes successfully.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DefaultConnectionStateHandler

      public DefaultConnectionStateHandler(Registry registry)
      Creates a new instance connected to the given registry.
      Parameters:
      registry - the global registry
  • Method Details

    • xhrException

      public void xhrException(XhrConnectionError xhrConnectionError)
      Description copied from interface: ConnectionStateHandler
      Called when an exception occurs during an XmlHttpRequest request to the server.
      Specified by:
      xhrException in interface ConnectionStateHandler
      Parameters:
      xhrConnectionError - An event containing what was being sent to the server and what exception occurred
    • heartbeatException

      public void heartbeatException(com.google.gwt.xhr.client.XMLHttpRequest request, Exception exception)
      Description copied from interface: ConnectionStateHandler
      Called when an exception occurs during a Heartbeat request.
      Specified by:
      heartbeatException in interface ConnectionStateHandler
      Parameters:
      request - The heartbeat request
      exception - The exception which occurred
    • heartbeatInvalidStatusCode

      public void heartbeatInvalidStatusCode(com.google.gwt.xhr.client.XMLHttpRequest xhr)
      Description copied from interface: ConnectionStateHandler
      Called when a heartbeat request returns a status code other than OK (200).
      Specified by:
      heartbeatInvalidStatusCode in interface ConnectionStateHandler
      Parameters:
      xhr - the heartbeat request
    • heartbeatOk

      public void heartbeatOk()
      Description copied from interface: ConnectionStateHandler
      Called when a Heartbeat request succeeds.
      Specified by:
      heartbeatOk in interface ConnectionStateHandler
    • handleRecoverableError

      protected void handleRecoverableError(DefaultConnectionStateHandler.Type type, elemental.json.JsonObject payload)
      Called whenever an error occurs in communication which should be handled by showing the reconnect dialog and retrying communication until successful again.
      Parameters:
      type - The type of failure detected
      payload - The message which did not reach the server, or null if no message was involved (heartbeat or push connection failed)
    • scheduleReconnect

      protected void scheduleReconnect(elemental.json.JsonObject payload)
      Called after a problem occurred. This method is responsible for re-sending the payload to the server (if not null) or re-send a heartbeat request at some point
      Parameters:
      payload - the payload that did not reach the server, null if the problem was detected by a heartbeat
    • doReconnect

      protected void doReconnect(elemental.json.JsonObject payload)
      Re-sends the payload to the server (if not null) or re-sends a heartbeat request immediately.
      Parameters:
      payload - the payload that did not reach the server, null if the problem was detected by a heartbeat
    • giveUp

      protected final void giveUp()
      Called when we should give up trying to reconnect and inform the user that the application is in CONNECTION_LOST state.
    • getDialogTextGaveUp

      protected String getDialogTextGaveUp(int reconnectAttempt)
      Gets the text to show in the reconnect dialog after giving up (reconnect limit reached).
      Parameters:
      reconnectAttempt - The number of the current reconnection attempt
      Returns:
      The text to show in the reconnect dialog after giving up
    • getDialogText

      protected String getDialogText(int reconnectAttempt)
      Gets the text to show in the reconnect dialog.
      Parameters:
      reconnectAttempt - The number of the current reconnection attempt
      Returns:
      The text to show in the reconnect dialog
    • configurationUpdated

      public void configurationUpdated()
      Description copied from interface: ConnectionStateHandler
      Called when some part of the reconnect dialog configuration has been changed.
      Specified by:
      configurationUpdated in interface ConnectionStateHandler
    • xhrInvalidContent

      public void xhrInvalidContent(XhrConnectionError xhrConnectionError)
      Description copied from interface: ConnectionStateHandler
      Called when invalid content (not JSON) was returned from the server as the result of an XmlHttpRequest request.
      Specified by:
      xhrInvalidContent in interface ConnectionStateHandler
      Parameters:
      xhrConnectionError - An event containing what was being sent to the server and what was returned
    • pushInvalidContent

      public void pushInvalidContent(PushConnection pushConnection, String message)
      Description copied from interface: ConnectionStateHandler
      Called when invalid content (not JSON) was pushed from the server through the push connection.
      Specified by:
      pushInvalidContent in interface ConnectionStateHandler
      Parameters:
      pushConnection - the push connection which was used
      message - the received message
    • xhrInvalidStatusCode

      public void xhrInvalidStatusCode(XhrConnectionError xhrConnectionError)
      Description copied from interface: ConnectionStateHandler
      Called when invalid status code (not 200) was returned by the server as the result of an XmlHttpRequest.
      Specified by:
      xhrInvalidStatusCode in interface ConnectionStateHandler
      Parameters:
      xhrConnectionError - An event containing what was being sent to the server and what was returned
    • handleUnauthorized

      protected void handleUnauthorized(XhrConnectionError xhrConnectionError)
    • handleCommunicationError

      protected void handleCommunicationError(String details, int statusCode)
      Called when a communication error occurs and we cannot recover from it.
      Parameters:
      details - message details or null if there are no details
      statusCode - the status code
    • xhrOk

      public void xhrOk()
      Description copied from interface: ConnectionStateHandler
      Called whenever a XmlHttpRequest to the server completes successfully.
      Specified by:
      xhrOk in interface ConnectionStateHandler
    • pushOk

      public void pushOk(PushConnection pushConnection)
      Description copied from interface: ConnectionStateHandler
      Called when the push connection to the server has been established.
      Specified by:
      pushOk in interface ConnectionStateHandler
      Parameters:
      pushConnection - The push connection which was established
    • pushScriptLoadError

      public void pushScriptLoadError(String resourceUrl)
      Description copied from interface: ConnectionStateHandler
      Called when the required push script could not be loaded.
      Specified by:
      pushScriptLoadError in interface ConnectionStateHandler
      Parameters:
      resourceUrl - The URL which was used for loading the script
    • pushNotConnected

      public void pushNotConnected(elemental.json.JsonObject payload)
      Description copied from interface: ConnectionStateHandler
      Called when a message is to be sent to the server through the push channel but the push channel is not connected.
      Specified by:
      pushNotConnected in interface ConnectionStateHandler
      Parameters:
      payload - The payload to send to the server
    • pushReconnectPending

      public void pushReconnectPending(PushConnection pushConnection)
      Description copied from interface: ConnectionStateHandler
      Called when the push connection has lost the connection to the server and will proceed to try to re-establish the connection.
      Specified by:
      pushReconnectPending in interface ConnectionStateHandler
      Parameters:
      pushConnection - The push connection which will be reconnected
    • pushError

      public void pushError(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
      Description copied from interface: ConnectionStateHandler
      Called when a fatal error fatal error occurs in the push connection. The push connection will not try to recover from this situation itself and typically the problem handler should not try to do automatic recovery either. The cause can be e.g. maximum number of reconnection attempts have been reached, neither the selected transport nor the fallback transport can be used or similar.
      Specified by:
      pushError in interface ConnectionStateHandler
      Parameters:
      pushConnection - The push connection where the error occurred
      response - An object containing response data
    • pushClientTimeout

      public void pushClientTimeout(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
      Description copied from interface: ConnectionStateHandler
      Called when a client side timeout occurs before a push connection to the server completes. The client side timeout causes a disconnection of the push connection and no reconnect will be attempted after this method is called,
      Specified by:
      pushClientTimeout in interface ConnectionStateHandler
      Parameters:
      pushConnection - The push connection which timed out
      response - An object containing response data
    • pushClosed

      public void pushClosed(PushConnection pushConnection, com.google.gwt.core.client.JavaScriptObject response)
      Description copied from interface: ConnectionStateHandler
      Called when the push connection to the server is closed. This might result in the push connection trying a fallback connection method, trying to reconnect to the server or might just be an indication that the connection was intentionally closed ("unsubscribe"),
      Specified by:
      pushClosed in interface ConnectionStateHandler
      Parameters:
      pushConnection - The push connection which was closed
      response - An object containing response data