code: def _handle_eio_message(self, sid, data):
          
          if sid in self._binary_packet:
              pkt = self._binary_packet[sid]
              if pkt.add_attachment(data):
                  del self._binary_packet[sid]
                  if pkt.packet_type == packet.BINARY_EVENT:
                      self._handle_event(sid, pkt.namespace, pkt.id, pkt.data)
                  else:
                      self._handle_ack(sid, pkt.namespace, pkt.id, pkt.data)
          else:
              pkt = packet.Packet(encoded_packet=data)
              if pkt.packet_type == packet.CONNECT:
                  self._handle_connect(sid, pkt.namespace)
              elif pkt.packet_type == packet.DISCONNECT:
                  self._handle_disconnect(sid, pkt.namespace)
              elif pkt.packet_type == packet.EVENT:
                  self._handle_event(sid, pkt.namespace, pkt.id, pkt.data)
              elif pkt.packet_type == packet.ACK:
                  self._handle_ack(sid, pkt.namespace, pkt.id, pkt.data)
              elif pkt.packet_type == packet.BINARY_EVENT or \
                      pkt.packet_type == packet.BINARY_ACK:
                  self._binary_packet[sid] = pkt
              elif pkt.packet_type == packet.ERROR:
                  raise ValueError('Unexpected ERROR packet.')
              else:
                  raise ValueError('Unknown packet type.')
docs: Dispatch Engine.IO messages.