当前位置: 首页 > 面试题库 >

JavaScript在Firebase中管理聊天频道的最佳方法

孟鹤龄
2023-03-14
问题内容

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

我在想是否最好使用id并控制对诸如USERID1-USERID2之类的频道的访问。

但是,当然,用户2也可以打开相同的频道,因此我想找到更易于控制的内容。

请,如果您想帮助我,请使用firebase网址/数组在JavaScript中给我一个示例。

谢谢!


问题答案:

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

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

var user1 = "Frank"; // UID of user 1

var user2 = "Eusthace"; // UID of user 2



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
  }
}

如果您担心键的长度,可以考虑使用组合UID的哈希码,而不是完整的UID。



 类似资料:
  • 下面是我用来创建聊天客户端和加入频道的代码:

  • 直播(频道)管理 创建频道 删除频道 修改频道信息 修改观看页信息 获取频道列表 获取指定频道信息 上传直播文档 禁止直播流推送 恢复直播流推送 频道定制观看页地址 获取频道观众人数显示配置 设置频道观众人数显示配置 查询频道功能开关状态 设置频道功能开关状态 直播权限操作管理 自定义授权说明 身份赋予API 获取频道授权码 设置自定义授权跳转地址 设置频道授权观看方式 获取频道授权观看 更新互动

  • 我正在尝试创建一个简单的聊天应用程序之间的两个用户,使用twilio js API。 如果它已经存在,则表示另一个用户已经登录,我希望加入此通道。 否则,我想用这个特定名称创建一个通道,并等待其他用户。 我尝试了两种选择:1。聊天客户端。2.IPMessaging客户端。 我正在尝试使用此功能:

  • 控制台-频道-聊天-发消息 接口URL {youke-url}/console/Index.php?c=live&a=setComment&timestamp=1607677497&access_key=abc&sign=5c734d046a244b27ffa74a4235a45a1b3ada5ec7 请求方式 POST Content-Type form-data 请求Query参数 参数 示例

  • 控制台-频道-聊天-删除消息 接口URL {youke-url}/console/Index.php?c=live&a=deleteComment&timestamp=1607677497&access_key=abc&sign=6513239c21beabd37f043d8f8c85ad655afcada0 请求方式 POST Content-Type form-data 请求Query参数 参

  • 控制台-频道-聊天-获取消息 接口URL {youke-url}/console/Index.php?c=live&a=getComment&timestamp=1607677497&access_key=abc&sign=97d791101db8600e162935d43cc63f0e3510cb98 请求方式 POST Content-Type form-data 请求Query参数 参数 示