Для чата, организованный в отдельные комнаты или чаты, рассмотреть вопрос о пересмотре своей структуры, чтобы быть следующими:
/chat_messages/<room-id>/<message-id>/<message-data>
Используя эту структуру, можно создать новый номер/разговор идентификатор с использованием конкретного имени вашего выбирая или создавая Firebase, используя .push()
. Всякий раз, когда вы хотите, чтобы написать новое сообщение в этой комнате, сделайте следующее:
var chatMessagesRef = new Firebase('<YOUR-FIREBASE>.firebaseio.com/chat_messages');
function sendMessage(roomId, message) {
chatMessagesRef.child(roomId).push(message);
}
Firebase по существу есть два пути для запроса данных:. По пути и по приоритету (см Firebase Blog: Denormalizing Your Data is Normal для получения дополнительной информации Firebase нажимные идентификаторы автоматически генерироваться сортировать в хронологическом порядке, так что вы можете получить в n
самые последние сообщения для любого разговора, используя limit()
запрос, например:
chatMessagesRef.child(roomId).limit(20).on('child_added', function(snapshot) { ... });
в качестве альтернативы, вы можете извлечь все сообщения для разговора, автоматически сортируются в хронологическом порядке, путем удаления limit()
в приведенном выше описании.
Если вы еще этого не сделали, ознакомьтесь с Firechat, который является официальным чат-клиентом Firebase с открытым исходным кодом и включает полностью документированный клиент JavaScript, структуру данных и правила безопасности для чата.
Я не знаю, поможет ли это, но у меня есть репозиторий git, как я создал функцию обмена сообщениями. Он не будет работать с летучей мыши, но, возможно, это даст вам представление. https://github.com/cyrilivargarcia/Messaging –