Firechat-无法发送消息

时间:2018-10-15 13:07:48

标签: javascript firebase firebase-realtime-database chat

我有一个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 :(得分:1)

好的,我尝试使用firebase创建新应用并部署您的代码。

数据库 我选择实时数据库 https://docs.microsoft.com/en-gb/xamarin/android/platform/binding-java-library/binding-an-aar

您不需要创建表,应该设置数据库规则。在我的示例中,我设置了 true 进行读写 enter image description here

然后,我们可以转到已部署的应用程序,登录并尝试创建聊天和发布消息。 enter image description here

一切正常,如果我们尝试从另一个帐户登录-所有数据都存在。 enter image description here

恢复:您应该设置数据库规则。

答案 1 :(得分:0)

根据documentation ...调用api.on()时,此操作仅绑定事件,但不执行任何操作。正如上面的函数initChat()看起来一样,其他事件可能来自何处甚至令人怀疑。您需要先加入一个会议室,然后向该会议室发送消息,以触发事件message-adddata-structuresecurity rules也可以发挥作用;例如。

"$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条目等于邮件订阅。