通过Webhook收听时,Twilio视频室状态回调事件是否有顺序?

通过Webhook收听时,Twilio视频室状态回调事件是否有顺序?,twilio,twilio-video,Twilio,Twilio Video,上下文: 我们在iOS、Android和WebBrowser上为我们的应用程序使用Twilio可编程视频。有一个JavaWeb服务器,它使用webhook监听所有事件 我们最近开始实施Android应用程序。对于android客户端,我们注意到“参与者连接”事件有时会在服务器中参与者的“添加轨迹”之后接收 这导致我们的服务器逻辑出现问题。由于我们的服务器预计“已连接的参与者”将出现在“已添加的曲目”之前,否则它无法将曲目添加到参与者(因为我们的服务器管理的参与者在“已连接的参与者”事件之前不可用

上下文:

我们在iOS、Android和WebBrowser上为我们的应用程序使用Twilio可编程视频。有一个JavaWeb服务器,它使用webhook监听所有事件

我们最近开始实施Android应用程序。对于android客户端,我们注意到“参与者连接”事件有时会在服务器中参与者的“添加轨迹”之后接收

这导致我们的服务器逻辑出现问题。由于我们的服务器预计“已连接的参与者”将出现在“已添加的曲目”之前,否则它无法将曲目添加到参与者(因为我们的服务器管理的参与者在“已连接的参与者”事件之前不可用)

我们尝试的内容:

  • 我们在连接选项中提供了localVideo和localAudio track,用于从android连接房间,这会随机导致此问题
  • 我们仅在连接room后才从android发布曲目(从连接选项中删除localVideo和localAudio曲目,并在onConnected回调中,在localParticipant上发布它们),这似乎有效,但不确定这是否正确
  • 问题:

    • 有时在参与者“连接参与者”之前接收“添加曲目”事件是否正常?
    • 如果是的话,你对优雅地处理这件事有什么建议
    • 如果不是,什么情况可能导致这种情况
    • 为什么只有Android客户端(iOS、web客户端工作正常)才会出现这种情况
    • 这是解决问题的正确方法之一吗,就像我们(从客户那里)做的那样
    另外,这更多的是一个概念性问题,因此没有提供代码

    问候


    更新:我编辑了我的问题,只强调了两个(粗体)。这两个我们真的需要知道。向其他人寻求答案将有助于我们更清楚地了解这一问题。

    这里是Twilio开发者福音传道者

    我不确定webhooks的顺序,但是既然您已经体验到了这一点,那么最好按照webhooks出现的顺序来处理它们


    在所有曲目的文档中,添加的所有事件还包括
    participantSid
    participandentitity
    participantStatus
    。因此,为了处理这个问题,我首先检查数据库中是否存在
    participantSid
    ,如果不存在,则创建它,无论这是添加的曲目还是参与者连接的事件。然后,如果参与者连接的webhook在添加了track之后到达,您可以直接删除它(除非
    participantStatus
    不同)。

    鉴于webhook的异步性质,我最初的假设是这些回调不应该有任何特定的顺序。当然,你建议的道路是其中一条路要走。但我们的困惑是,为什么只有android客户端才会出现这种情况?我同意,但我猜参与者加入并添加赛道是一个相当同步的事件,可能会导致比赛条件,特别是在进行网络通话时。我希望这种方法对你有用。