Getstream.io:通过 socket/faye 删除的活动的消息格式
Getstream.io: Message format for deleted activities via socket/faye
我正在通过 getstream.io 实现类似 Facebook 反应的功能。
发布和删除活动 ("reactions") 工作正常。
基础知识:
- 在实现 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"
}
- 我订阅了 聚合 供稿后的固定供稿。
- 我通过固定提要添加和删除活动。
- 在添加和删除活动时,对平面和聚合提要的订阅都return相同的消息。
我面临的挑战:
- 当我删除一个 activity 时(通过
foreign_id
)- 为什么在删除的数组中出现 5 个 ID?
- 我需要 foreign_id 来反映应用程序中的变化,同时消化来自 gestream.io 的套接字消息。这适用于新活动,因为发送了完整的对象(请参见上面的示例)。但是,对于已删除的活动,它们会丢失,因为只发送了一个
ids
数组。
可能的方法:
- 我能否以某种方式将我的 getstream faye 订阅或配置配置为(也)return
foreign_ids
删除的项目?
- 我可以尝试根据套接字消息另外获取那些
ids
,但这看起来几乎是荒谬的。
非常感谢。
通过 foreign_id
删除活动将删除提要中存在给定 foreign_id 的所有活动。这是使用 foreign_id 字段的主要优点之一,它允许对一组活动进行级联删除。 (例如,Post 和点赞是一个典型的用例,您想要删除一个 Post 以及与之相关的所有点赞)。
使用 foreign_id 的另一个优点是您不必跟踪 Stream 生成的 ID。
您应该能够通过为 foreign_id
字段选择一个唯一的值(例如,数据库中的对象 ID)来解决您的第一个问题,这样您仍然可以轻松删除并避免级联删除行为。
关于你的第二个问题,如果你正在根据实时更新更新你的 UI 这也意味着你已经从同一个提要中阅读,并且你有活动列表及其 ID和 foreign_ids。从 activity_id 中选择活动应该只是创建某种内存映射的问题(例如,将 data-activity_id 属性添加到 DOM)。
我正在通过 getstream.io 实现类似 Facebook 反应的功能。 发布和删除活动 ("reactions") 工作正常。
基础知识:
- 在实现 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"
}
- 我订阅了 聚合 供稿后的固定供稿。
- 我通过固定提要添加和删除活动。
- 在添加和删除活动时,对平面和聚合提要的订阅都return相同的消息。
我面临的挑战:
- 当我删除一个 activity 时(通过
foreign_id
)- 为什么在删除的数组中出现 5 个 ID? - 我需要 foreign_id 来反映应用程序中的变化,同时消化来自 gestream.io 的套接字消息。这适用于新活动,因为发送了完整的对象(请参见上面的示例)。但是,对于已删除的活动,它们会丢失,因为只发送了一个
ids
数组。
可能的方法:
- 我能否以某种方式将我的 getstream faye 订阅或配置配置为(也)return
foreign_ids
删除的项目? - 我可以尝试根据套接字消息另外获取那些
ids
,但这看起来几乎是荒谬的。
非常感谢。
通过 foreign_id
删除活动将删除提要中存在给定 foreign_id 的所有活动。这是使用 foreign_id 字段的主要优点之一,它允许对一组活动进行级联删除。 (例如,Post 和点赞是一个典型的用例,您想要删除一个 Post 以及与之相关的所有点赞)。
使用 foreign_id 的另一个优点是您不必跟踪 Stream 生成的 ID。
您应该能够通过为 foreign_id
字段选择一个唯一的值(例如,数据库中的对象 ID)来解决您的第一个问题,这样您仍然可以轻松删除并避免级联删除行为。
关于你的第二个问题,如果你正在根据实时更新更新你的 UI 这也意味着你已经从同一个提要中阅读,并且你有活动列表及其 ID和 foreign_ids。从 activity_id 中选择活动应该只是创建某种内存映射的问题(例如,将 data-activity_id 属性添加到 DOM)。