2015-08-13 101 views
0

我正在开发使用Firebase的聊天工具。但是我在执行hellban时遇到问题。我需要下一个功能: - 如果用户被封锁,他可以写邮件,他可以看到并阅读它,但其他用户不应该看到这些邮件。 我没有这个问题的正确解决方案。你有实现这个hellban功能的api吗?或者可能你可以带我一些提示?如何在Firebase聊天中实现hellban?

回答

1

这确实取决于您的要求。

如果你想所有消息由地狱禁止用户被禁止(包括邮件发送之前禁令后),那么你应该创建用户对象的banned布尔属性并将其设置为true。弄清楚是否应该向另一个用户显示一条消息,然后检查是否在“on-new-message”处理程序中的违规者用户对象上设置了“禁止”标志。

如果你想为呈现标记个人信息的途径(在情况下,当你只是想给块消息用户被禁止后发送),那么你也应该设定标志另外message对象在违规者的user对象上设置标志。在写出新消息之前,请检查消息的撰写者是否被禁止,并且如果她将消息上的banned标志设置为true。在您的“新消息”处理程序中,检查banned标志在显示给用户之前是否已设置。

在这两种情况下,您都应该检查消息中的userId,以查看“on-new-message”并显示它,无论banned状态是否由登录用户写入。

一些例子来引导您完成(在JavaScript):

/* ref is on messages collection */ 

//Retrieval 
ref.on("child_added", function(snapshot, prevChildKey) { 
    var newMessage = snapshot.val(); 
    if(newMessage.userId == user.id || !newMessage.banned) { 
    /* Display Message */ 
    } 
}); 

//Posting 
var newMessage = { 
    userId = user.id 
    ... 
} 
if(user.banned){ 
    newMessage.banned = true; 
} 
ref.push(newMessage)