Firechat - не могу отправлять сообщения - PullRequest
0 голосов
/ 15 октября 2018

У меня есть реализация Firechat , которая правильно инициализируется, но при входе в систему вы можете создавать комнаты и входить в них, но сообщения никуда не денутся.Я построил функции для обработки отправки сообщений, но я не думаю, что он правильно соединяет объекты FirechatUI и Firechat с базой данных Firebase.

function initChat(user) {
    var room = '';
    var db = firebase.database().ref("chat");
    var chat = new FirechatUI(db, document.getElementById('firechat'));
    var api = chat._chat;
    console.log(api);
    api.setUser(user.uid, user.displayName, function(user) {
        api.resumeSession();
    });

    chat.setUser(user.uid, user.displayName, function(user) {
        chat.resumeSession();
    });

    api.on('message-add', function(messagedRoom, messageContent) {
        console.log('Sent message to room: '+messagedRoom.id+' with the content "'+messageContent+'"');
        api.sendMessage(messagedRoom.id, messageContent, 'default');
    });

    api.on('room-enter', function(enteredRoom) {
        api.enterRoom(enteredRoom.id);
        room = enteredRoom.id;
    });

    api.on('room-exit', function(exitedRoom) {
        api.leaveRoom(exitedRoom.id);
        room = '';
    });

    isInitialized = true;
}

Событие «добавление сообщения» никогда не запускается, нособытия "комната-вход" и "комната-выход" делают.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Хорошо, я пытался создать новое приложение с помощью firebase и развернуть ваш код.

База данных Я выбираю База данных в реальном времени enter image description here

Вам не нужно создавать таблицы, вы должны настроить правила базы данных.В моем примере я настроил true для чтения | записи enter image description here

Затем мы можем перейти к нашему развернутому приложению, войти в систему и попытаться создать чат иотправлять сообщения.enter image description here

Все работает, и если мы пытаемся войти в систему с другой учетной записи - все данные существуют.enter image description here

Резюме: необходимо настроить правила базы данных.

0 голосов
/ 19 октября 2018

в соответствии с документацией ... при вызове api.on() это только связывает событие, но ничего не выполняет.так как приведенная выше функция initChat() выглядит одинаково, даже сомнительно, откуда могут поступать другие события.Вы должны сначала присоединиться к комнате, а затем отправить сообщение в эту комнату, чтобы было инициировано событие message-add.также структура данных & правила безопасности могут сыграть свою роль;например,

"$roomId": {
    ...
    // a list of users that may read messages from this room.
    "authorizedUsers": {
        ".write": "(auth != null) && (!data.exists() || root.child('moderators').hasChild(auth.uid) || data.hasChild(auth.uid))"
    }
}

, если только moderators или "$roomId/authorizedUsers" не добавлен соответствующий пользователь key, нет причин для запуска события.key запись там равно подписке на сообщения.

...