Я пытаюсь реализовать приложение приватного чата (веб-сайт) с использованием firebase, но я застряну с логикой личных сообщений.
Вот мой код, но только для группового чата, а не личного
var messagesRef = new Firebase('https://sample.firebaseio.com/users');
var message="Hi firebase"var userid="1"//send message
messagesRef.push({userid:userid, message:message});
//list the messages
messagesRef.limitToLast(10).on('child_added', function (snapshot) {
//get the chat messages
var data = snapshot.val();
var username = data.name;
var message = data.text;
shomessage.append("from:"+username+"msg:"+message);
}
Предположим, у меня есть два пользователя A и B (каждый пользователь имеет уникальный идентификатор), которые будут в приватном чате. Каковы изменения в приведенном выше коде?
Заметка: Я не любил использовать API Firechat
Там нет одного ответа, но вот несколько основных вариантов:
Структура
Users
user_id_0
messages
message_id_0
from: user_id_1
message: "Hello to user_id_0"user_id_1
messages
message_id_1
from: user_id_0
message: "Hello back to user_id_1"
user_id_0 и user_id_1 будут наблюдать за своим собственным узлом сообщений для добавления сообщений.
Вы можете перевернуть логику и хранить данные в узле сообщений
Messages
user_id_0
message_id_0
from: user_id_1
message: "Hello to user_id_0"user_id_1
message_id_1
from: user_id_0
message: "Hello to user_id_1"public
message_id_3
from: user_id_0
message: "Hello to the public"
Вы могли бы даже пойти немного поверхностно и полагаться на логику в коде, чтобы получать уведомления об изменениях, но показывать пользователю только те из них, которые являются частными для этого пользователя, и публичные сообщения.
Messages
message_id_0
from: user_id_0
to: user_id_1
type: "private"message: "a private message"message_id_1
from: user_id_0
type: "public"message: "a public message"
Надеюсь, один из них подойдет вашей модели.
Других решений пока нет …