如何在Firebase聊天中实现hellban?

时间:2015-08-13 09:34:26

标签: firebase

我正在使用Firebase开发聊天。但我实施一个地狱班有问题。我需要下一个功能: - 如果用户是hellbanned,他可以写消息,他可以看到和阅读它,但其他用户不应该看到这些消息。 我没有正确解决这个问题的方法。你有没有实现这个hellban功能的api?或者你可以给我一些提示吗?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的要求。

如果您希望禁止使用地狱禁止用户的所有消息(包括之前发送的禁止后发送的消息),那么你应该在用户对象上创建一个banned布尔属性并将其设置为true。确定是否应该向另一个用户显示消息是一个问题,即检查是否“禁止”#39;在" on-new-message"中的违规者用户对象上设置了标志。处理程序。

如果你想采取标记个别消息的路线(如果你只是想在用户被禁止后发送发送的阻止消息的情况下),那么你也应该设置标志message对象除了在违规者的user对象上设置标志外。在您写出新消息之前,请检查消息的编写者是否已被禁止,然后是否将消息的banned标志设置为true。在你的" on-new-message"处理程序检查banned标志是否已设置,然后再显示给用户。

在任何一种情况下,您还应该检查发送到" on-new-message"的消息的userId。如果已由登录用户写入,则显示它,无论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)