Getstream.io:通过socket/faye删除活动的消息格式



我正在通过getstream.io实现类似Facebook反应的功能。张贴和删除活动("反应")效果良好。

基础知识:

  • 在实现getstream的socket特性(faye)以实时反映提要更改时,我发现新活动的socket消息的格式与已删除活动的不同

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

{
  "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
  • 在消化gestrem.io中的套接字消息时,我需要有foreign_id来反映应用程序中的变化。当发送完整对象时,这对新活动很有效(参见上面的示例)。但是,对于已删除的活动,由于只发送了一个ids数组,因此缺少这些活动

潜在方法:

  • 我可以以某种方式配置我的getstream faye订阅或配置为(也)为删除的项目返回foreign_ids
  • 我还可以尝试根据套接字消息获取这些ids,但这似乎很荒谬

非常感谢。

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

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

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

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

最新更新