1

我正在通过 getstream.io 实现类似 Facebook 的反应。发布和删除活动(“反应”)工作正常。

基本:

  • 在实现 getstream 的套接字功能 (faye) 以实时反映提要更改时,我看到新活动的套接字消息格式与已删除活动的格式不同。

示例在删除和新建中各有一个反应:

{
  "deleted": [
    "d5b1aee0-5a1a-11e6-8080-80015eb61bf9",
    "49864f80-5a19-11e6-8080-80015eb61bf9",
    "47fe7700-5a19-11e6-8080-80015eb61bf9",
    "4759ab80-5a19-11e6-8080-80015eb61bf9",
    "437ce680-5a19-11e6-8080-80015eb61bf9"
  ],
  "new": [
    {
      "actor": "user:55d4ab8a11234359b18f06f6:Manuel Reil",
      "verb": "support",
      "object": "control:56bf2fb884e5c0756e910755",
      "target": null,
      "time": "2016-08-04T11:48:23.168000",
      "foreign_id": "55d4ab8a11234359b18f06f6:support:56bf2fb884e5c0756e910755",
      "id": "58d9c000-5a39-11e6-8080-80007c3c41d8",
      "to": [],
      "origin": "control:56bf2fb884e5c0756e910755"
    }
  ],
  "published_at": "2016-08-04T11:48:23.546708+00:00"
}
  • 我订阅了统一提要之后的 聚合提要。
  • 我通过固定提要添加和删除活动。
  • 在添加和删除活动时,对平面和聚合提要的订阅都返回相同的消息。

我面临的挑战:

  • 当我删除一项活动(通过foreign_id)时 - 为什么在删除的数组中出现 5 个 ID?
  • 在消化来自 gestream.io 的套接字消息时,我需要使用 foreign_id 来反映应用程序中的更改。这适用于发送完整对象的新活动(参见上面的示例)。但是,对于已删除的活动,它们丢失了,因为只是ids发送了一个数组。

潜在方法:

  • 我可以以某种方式将我的 getstream faye 订阅或配置配置为(也)返回foreign_ids已删除的项目吗?
  • 我可以尝试ids根据套接字消息另外获取那些,但这似乎几乎是荒谬的。

非常感谢。

4

1 回答 1

1

通过foreign_id删除活动删除提要中存在给定 foreign_id 的所有活动。这是使用 foreign_id 字段的主要优点之一,它允许级联删除到一组活动。(例如,帖子和点赞是一个典型的用例,您想删除一个帖子以及与之相关的所有点赞)。

使用 foreign_id 的另一个优点是您不必跟踪 Stream 生成的 ID。

您应该能够通过foreign_id为唯一的字段(例如数据库中的对象 ID)选择一个值来解决您的第一个问题,这样您仍然可以轻松删除并避免级联删除行为。

关于您的第二个问题,如果您根据实时更新更新您的 UI,这也意味着您已经从同一个提要中读取,并且您拥有带有 ID 和 foreign_ids 的活动列表。从 activity_id 中选择活动应该只是创建某种内存映射的问题(例如,将 data-activity_id 属性添加到您的 DOM)。

于 2016-08-04T13:36:10.240 回答