code: private void handleChannelCallback(final String message) {
  		// Channel callback
  		updateConnectionHeartbeat();
  
  		// JSON callback
  		final JSONArray jsonArray = new JSONArray(new JSONTokener(message));
  
  		if(connectionFeatureManager.isConnectionFeatureActive(BitfinexConnectionFeature.SEQ_ALL)) {
  			sequenceNumberAuditor.auditPackage(jsonArray);
  		}
  
  		final int channel = jsonArray.getInt(0);
  		final ChannelCallbackHandler channelCallbackHandler = channelIdToHandlerMap.get(channel);
  		if (channelCallbackHandler == null) {
  			logger.error("Unable to determine symbol for channel {} / data is {} ", channel, jsonArray);
  			reconnect();
  			return;
  		}
  		String action = null;
  		final JSONArray payload;
  		if (jsonArray.get(1) instanceof String) {
  			action = jsonArray.getString(1);
  			payload = jsonArray.optJSONArray(2);
  		} else {
  			payload = jsonArray.optJSONArray(1);
  		}
  		if (Objects.equals(action, "hb")) {
  			quoteManager.updateChannelHeartbeat(channelCallbackHandler.getSymbol());
  		}
  		try {
  			if (payload == null) {
  				return;
  			}
  			channelCallbackHandler.handleChannelData(action, payload);
  		} catch (final BitfinexClientException e) {
  			logger.error("Got exception while handling callback", e);
  		}
  	}
docs: Handle a channel callback
  @param message