Database 保存和重播事件序列的正确方法

Database 保存和重播事件序列的正确方法,database,data-structures,data-modeling,Database,Data Structures,Data Modeling,我们正在使用React Native构建一个移动软件,用户可以在其中启动/构建一些操作的会话,这些操作应该在以后记录和重播。这些操作包括播放一些视频、查找播放的视频、暂停并再次播放、显示特定时间段的自定义消息。。。等等 到目前为止,我们制作的最佳模型是: { "episode": { "name": "The New MacBook Pro", "events": { "1589168577": { "source": "stream",

我们正在使用React Native构建一个移动软件,用户可以在其中启动/构建一些操作的会话,这些操作应该在以后记录和重播。这些操作包括播放一些视频、查找播放的视频、暂停并再次播放、显示特定时间段的自定义消息。。。等等

到目前为止,我们制作的最佳模型是:

 {
  "episode": {
    "name": "The New MacBook Pro",
    "events": {
      "1589168577": {
        "source": "stream",
        "action": "play"
        "link": "https://example.com/s1/ep1.mp3"
      },
      "1589168665-1589168223": {
        "source": "video",
        "link": "https://www.youtube.com/watch?v=yoQOmOlWLZo",
        "action": "play"
      },
      "1589169026-1589169827": {
        "source": "video",
        "link": "https://www.youtube.com/watch?v=yoQOmOlWLZo",
        "action": "pause"
      },
      "1589169381-1589169237": {
        "source": "video",
        "link": "https://www.youtube.com/watch?v=yoQOmOlWLZo",
        "action": "play"
      },
      "1589169420-1589169124": {
        "source": "video",
        "link": "https://www.youtube.com/watch?v=yoQOmOlWLZo",
        "action": "seek",
        "seek": "399"
      },
      "1589169540-1589169235": {
        "source": "video",
        "link": "https://www.youtube.com/watch?v=yoQOmOlWLZo",
        "action": "stop"
      },
      "1589169523-1589169235": {
        "source": "message",
        "text": "Keep following up for the discound code",
        "action": "show"
      },
      "1589169542": {
        "source": "stream",
        "action": "stop"
      }
    }
  }
}
在Firebase上,我们记录需要重放的动作(如上所述),当用户播放会话时,所有事件都必须按照准确的顺序播放。
events
节点键保存事件开始和结束的时间戳,以破折号分隔。(注:上面的时间戳是错误的,请举例说明)

应用程序开始播放会话,并将当前时间戳与
events
节点中保存的时间戳进行比较,如果它们相等,则播放操作

现在的问题是,当用户重播会话时,寻找时间线上某个动作已经在播放的特定位置,我们对此有问题,一些事件被错过了

我确信有更好的方法可以做到这一点,但我想不出更好的方法来以正确的方式保存数据,以帮助我们正确地重播这些操作

我们正在做的一个很好的例子是在Youtube上播放一段视频,其中用户寻找广告应该出现的特定时间,并在另一个位置显示订阅按钮、字幕。。。。。等等


我很感激你的善意建议。

我自己不是回答这个问题的最佳人选,但你能告诉我们你在哪里遇到了问题,确切的问题是什么吗?例如,即使您不能真正向我们展示代码,您能给我们一个逻辑的基本描述和失败的具体步骤,以及任何错误消息或症状吗?例如,主机在10:00和10:03开始播放视频,并查找视频几分钟。如果播放此录制的会话,如果将会话直接搜索到>10:04,则无法检测视频搜索事件。为什么不存储确切的操作(他或她所做的操作),但存储触发的事件(幸运的是,大多数设备一次只存储一个应用程序):9:59在10:00打开视频在10:03按播放按钮在10:03单击查找到时间15:45在10:05单击暂停在10:15单击恢复在10:30关闭视频在10:35会话关闭这将允许您跟踪用户执行的操作,因此保留操作的历史记录您可以重播用户屏幕上的内容(类似于redux开发工具所做的),或者任何需要的东西。