@Override
  public void onApplicationEvent(TcpConnectionEvent event) {

    final EventType eventType = event.getType();

    if (TcpConnectionEventType.OPEN.equals(eventType)) {

    } else if (TcpConnectionEventType.CLOSE.equals(eventType)) {
      logger.info("TCP Event: CLOSED - Removing client: " + event.getConnectionId());
      clients.remove(event.getConnectionId());
    } else if (TcpConnectionEventType.EXCEPTION.equals(eventType)) {
      logger.warn("EXCEPTION Event - Removing client: " + event.getConnectionId());
      clients.remove(event.getConnectionId());
    } else if (WebSocketEventType.HANDSHAKE_COMPLETE.equals(eventType)) {
      logger.info("HANDSHAKE_COMPLETE - Adding client: " + event.getConnectionId());
      clients.put(event.getConnectionId(), new AtomicInteger());
    } else if (WebSocketEventType.WEBSOCKET_CLOSED.equals(eventType)) {
      logger.info("WEBSOCKET_CLOSED - Removing client: " + event.getConnectionId());
      clients.remove(event.getConnectionId());
    } else {
      throw new IllegalArgumentException(
          String.format("EventType '%s' is not supported.", eventType));
    }
  }