> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-013b37f0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Connection Status

CometChat SDK provides you with a mechanism to get real-time status of the connection to CometChat web-socket servers. To achieve this you need to use the `ConnectionListener` class provided by the CometChat SDK

Connection Status provides you with the below 3 methods to get the status of the connection to CometChat web-socket servers:

| Delegate Method    | Information                                                                                                                                      |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| onConnecting       | This method is triggered when CometChat SDK is trying to establish a connection to the web-socket server.                                        |
| onConnected        | This method is called when CometChat SDK has successfully established a connection and now is connected.                                         |
| onDisconnected     | This method is called when the CometChat SDK gets disconnected due to any issue while maintaining the connection like network fluctuations, etc. |
| onFeatureThrottled | CometChat automatically toggles off certain features to prevent performance loss for end-users under various circumstances                       |

Once the connection is broken, the disconnected callback is triggered, the SDK automatically tries to establish the connection again, thus going into the connecting state and triggering the `connecting` method. Once the attempt to connect is successful, the `connected` method is triggered thus letting the developer know that the connection is established and is active.

In order to use the ConnectionListeners, you need to add the ConnectionListeners using the `addConnectionListener` method provided by the SDK. You can add multiple listeners as shown below. Just make sure you add listeners with unique IDs.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChat.addConnectionListener("UNIQUE_LISTENER_ID", new CometChat.ConnectionListener() {
      @Override
        public void onConnected() {
        Log.i(TAG, "onConnected: ");
      }
      
      @Override
        public void onConnecting() {
        Log.i(TAG, "onConnecting: ");
      }

      @Override
        public void onDisconnected() {
        Log.i(TAG, "onDiconnected: ");
      }
      
      @Override
        public void onFeatureThrottled() {
        Log.i(TAG, "onFeatureThrottled: ");
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    CometChat.addConnectionListener("UNIQUE_LISTENER_ID", object : ConnectionListener {
      override fun onConnected() {
        Log.i(TAG, "onConnected: ")
      }

      override fun onConnecting() {
        Log.i(TAG, "onConnecting: ")
      }

      override fun onDisconnected() {
        Log.i(TAG, "onDiconnected: ")
      }

      override fun onFeatureThrottled() {
        Log.i(TAG, "onFeatureThrottled: ")
      }
    })
    ```
  </Tab>
</Tabs>

You can also get the current connection status by using `getConnectionStatus` property provided by CometChat SDK

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    String connectionStatus = CometChat.getConnectionStatus();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val connectionStatus = CometChat.getConnectionStatus()
    ```
  </Tab>
</Tabs>

The above method will return either of the below 3 values:

1. `CometChatConstants.WS_STATE_CONNECTED` (connected);
2. `CometChatConstants.WS_STATE_CONNECTING`(connecting)
3. `CometChatConstants.WS_STATE_DISCONNECTED`(disconnected)
4. `CometChatConstants.WS_STATE_FEATURE_THROTTLED`(featureThrottled)
