¿Cómo observar todos los eventos de la base de datos de Firebase entre dos usuarios al mismo tiempo?

En primer lugar, si tiene una sugerencia para un mejor título o una pregunta real para este envío, no dude en editar. Estoy estancado en cuanto a cómo tener éxito al hacer esta pregunta.

Así que he revisado varios tutoriales de Firebase chat (iMessage / Facebook chat) para Swift. Sé cómo enviar un mensaje.

    let ref = Database.database().reference().child("Message")
    let childRef = ref.childByAutoId()
    let toID = finalSelected.ContactID as Any
    let fromID = Auth.auth().currentUser?.uid
    let values = ["Message": messageTextField.text!, "toID": toID, "fromID": fromID!] as [String: Any]
    childRef.updateChildValues(values) { (error, ref) in ...

y sé cómo recuperarlos

    let messagesOf = Auth.auth().currentUser?.uid

    let messageDB = Database.database().reference().child("Message")
    let userMessages = messageDB.queryOrdered(byChild: "toID").queryEqual(toValue: messagesOf)
    userMessages.observeSingleEvent(of: .childAdded, with: { (snapshot) in
         let values = snapshot.value as! Dictionary<String, String>

        let message = values["Message"]
        let from = values["fromID"]
        let post = ChatMessages()
        post.aMessage = message!
        post.Interested = from!

        self.messagesArray.append(post)
        self.tableView.reloadData()
   })

Sin embargo, estoy teniendo dificultades para terminar la lógica. No entiendo cómo estos dos eventos separados se combinan en un resultado final idéntico, no dos transacciones diferentes. Déjame ver si puedo explicarlo más ...

Te mando un mensaje Luego recibo este mensaje como otro usuario. Pero no entiendo cómo se descargan los datos de / a que hacen referencia a ambos simultáneamente. A menos que esté buscando pasar por alto algunos detalles, ¿la observación única o plural de un evento solo se aplica a un usuario? ¿O estoy malinterpretando algún concepto aquí?

La ayuda con este concepto final sería fantástica. Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta