1

getstream.io 経由で Facebook の反応のようなものを実装しています。アクティビティ (「リアクション」) の投稿と削除は正常に機能します。

基本:

  • フィードの変更をリアルタイムで反映する getstream のソケット機能 (faye) を実装しているときに、新しいアクティビティのソケット メッセージの形式が、削除されたアクティビティのソケット メッセージの形式と異なることに気付きました。

削除済みと新規のそれぞれに 1 つのリアクションがある例:

{
  "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"
}
  • フラット フィードに続く集約フィードを購読してい ます。
  • フラットフィードを介してアクティビティを追加および削除します。
  • フラット フィードと集約フィードの両方のサブスクリプションは、アクティビティを追加および削除するときに同じメッセージを返します。

私が直面している課題:

  • (経由で) 1 つのアクティビティを削除するforeign_idと、削除された配列に 5 つの ID が表示されるのはなぜですか?
  • gestream.io からのソケット メッセージをダイジェストするときに、アプリの変更を反映するためにforeign_id が必要です。これは、完全なオブジェクトが送信されるため、新しいアクティビティに対して正常に機能します (上記の例を参照)。ただし、削除されたアクティビティについては、単に配列idsが送信されるため、欠落しています。

考えられるアプローチ:

  • どうにかして getstream faye サブスクリプションまたは構成を構成foreign_idsして、削除されたアイテムを (また) 返すことはできますか?
  • idsソケット メッセージに基づいてさらにそれらを取得しようとすることもできますが、これはほとんどばかげているようです。

どうもありがとうございました。

4

1 に答える 1

1

アクティビティをforeign_id削除すると、フィードに存在する特定のforeign_idを持つすべてのアクティビティが削除されます。これは、foreign_id フィールドを使用する主な利点の 1 つであり、削除をアクティビティのグループにカスケードできます。(例: 投稿といいねは、1 つの投稿とそれに関連するすべてのいいねを削除する典型的なユースケースです)。

foreign_id を使用するもう 1 つの利点は、Stream によって生成された ID を追跡する必要がないことです。

一意のフィールドの値 (データベースからのオブジェクト ID など) を選択することで、最初の問題を解決できるはずですforeign_id。この方法では、簡単に削除でき、カスケード削除動作を回避できます。

2 番目の問題については、リアルタイムの更新に基づいて UI を更新している場合、同じフィードから既に読み取っていること、および ID とforeign_ids を含むアクティビティのリストがあることも意味します。activity_id からのアクティビティの選択は、何らかの種類のメモリ マップを作成するだけの問題です (たとえば、data-activity_id 属性を DOM に追加します)。

于 2016-08-04T13:36:10.240 に答える