code: def handle_data(self, ts, msg):
          
          try:
              chan_id, *data = msg
          except ValueError as e:
              # Too many or too few values
              raise FaultyPayloadError("handle_data(): %s - %s" % (msg, e))
          self._heartbeats[chan_id] = ts
          if data[0] == 'hb':
              self._handle_hearbeat(ts, chan_id)
              return
          try:
              self.channels[chan_id](ts, chan_id, data)
          except KeyError:
              raise NotRegisteredError("handle_data: %s not registered - "
                                       "Payload: %s" % (chan_id, msg))
docs: Passes msg to responding data handler, determined by its channel id,
          which is expected at index 0.
          :param ts: timestamp, declares when data was received by the client
          :param msg: list or dict of websocket data
          :return: