javascript – 在Firebase中管理聊天频道的最佳方式

在我的主页面中,我有一个用户列表,我想选择并打开一个频道与其中一个聊天.

我在想如果使用id是最好的方法并控制像USERID1-USERID2这样的频道的访问.

但是当然,用户2也可以打开相同的频道,所以我想找到一些更容易控制的东西.

如果你想帮助我,请使用firebase url / array在javascript中给我一个例子.

谢谢!

解决方法:

处理此类1:1聊天室的常用方法是根据用户ID生成会议室URL.正如您已经提到的,这个问题是任何一个用户都可以发起聊天,在这两种情况下他们都应该在同一个房间里.

您可以通过在复合键中按字典顺序排序用户ID来解决此问题.例如,使用用户名而不是ID:

var user1 = "Frank";
var user2 = "Eusthace";

var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);

console.log(user1+', '+user2+' => '+ roomName);
            
user1 = "Eusthace";
user2 = "Frank";

var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);

console.log(user1+', '+user2+' => '+ roomName);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

常见的后续问题似乎是如何显示当前用户的聊天室列表.上面的代码没有解决这个问题.在NoSQL数据库中很常见,您需要扩充数据模型以允许此用例.如果要显示当前用户的聊天室列表,则应对数据建模以允许该类型.最简单的方法是为每个用户添加一个聊天室列表到数据模型:

"userChatrooms" : {
  "Frank" : {
    "Eusthace_Frank": true
  },
  "Eusthace" : {
    "Eusthace_Frank": true
  }
}
上一篇:WebSocket+SpringBoot的小Demo记录


下一篇:php – 在网页和android之间实现聊天