【问题标题】:Twilio Video - How to get current number of participants in a room?Twilio Video - 如何获取房间中当前的参与者数量?
【发布时间】:2017-09-29 10:45:18
【问题描述】:

我想知道当前有多少人在使用 Twilio Video 时连接到一个房间。

Twilio 有一个 REST API 来获取房间资源,但它不返回当前的参与者数量。

https://www.twilio.com/docs/api/video/rooms-resource#get-by-sid

我看到的唯一方法是订阅“参与者连接”和断开连接事件的状态回调,并手动跟踪有多少参与者连接或离开房间。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: twilio twilio-api


    【解决方案1】:

    您可以使用 twilio 服务器端 sdk,让我分享 NodeJS 示例,以便您更好地了解实现。

    首先让我们定义初始化 twilio 客户端并获取房间的连接参与者的函数。

    async function getConnectedParticipants(roomName) {
    
      var Twilio = require('twilio');
    
      var apiKeySid = "YOUR_TWILIO_API_KEY_SID_HERE";
      var apiKeySecret = "YOUR_TWILIO_API_SECRET_HERE";
      var accountSid = "YOUR_TWILIO_ACCOUNT_SID_HERE";
    
      var client = new Twilio(apiKeySid, apiKeySecret, {accountSid: accountSid});
    
      var list = await client.video.rooms(roomName)
                          .participants
                          .list({status: 'connected'});
    
      return list;
    }
    
    

    现在让我们使用返回已连接参与者的函数。

    var connectedParticipants = await getConnectedParticipants("YourRoomName");
    
    // print all connected participants
    console.log('connectedParticipants', connectedParticipants);
    

    注意:我在此示例中使用了 asyncawait,请在实施前进一步检查。

    【讨论】:

      【解决方案2】:

      这里是 Twilio 开发者宣传员。

      根据参与者连接和断开连接的事件保留参与者身份的服务器端列表可能是目前解决此问题的最佳方法。

      另一种方法是从前端获取此信息。 JavaScript 库允许您查询the participants in a room。您也可以定期或根据事件查询该属性并通过 Ajax 将其发送到您的服务器。

      如果有帮助,请告诉我。

      更新

      已连接到房间的Rooms API now allows you to retrieve information on participants。例如,要使用 Node.js 获取房间中当前连接的用户,代码如下所示:

      var client = new Twilio(apiKeySid, apiKeySecret, {accountSid: accountSid});
      
      client.video.rooms(roomSid).participants
        .list({status: 'connected'}, (err, participants) => {
          if (err) { console.error(err); return; }
          console.log(participants.length);
        });
      

      【讨论】:

      • 我想限制加入房间的人数。我知道 twilio 也可以选择 MaxCurrentParticipants,但我想对当前参与者的数量、这些参与者的访问级别等进行一些自定义检查。如果我可以对 /rooms/:roomId 和获取参与者数组,以便我可以在我的系统中交叉引用并通过创建/拒绝访问令牌来响应加入房间的请求。不能依赖客户端 ajax 调用,因为它们很容易被击败。
      • 恐怕目前听 webhook 是最好的方式来说明这一点。
      • 我希望在状态回调和通过 API 检索房间时返回参与者列表。跟踪谁连接/断开连接对我们来说意味着更多的数据库吞吐量和超出范围的开发时间,而不仅仅是读取属性。这是个问题。
      • 嘿昆汀,好消息,这是一个旧答案。您现在可以对房间的participants resource 进行 REST API 调用。在我上面的答案中查看更新的代码。
      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多