2016-08-04 42 views
1

我正在通過getstream.io實施類似Facebook的反應。 發佈和刪除活動(「反應」)正常工作。Getstream.io:通過socket/faye刪除活動的消息格式

基礎:

  • 儘管實現getstream以反映實時饋送的變化的插座特徵(菲),我看到,對於新的活動套接字消息的格式從所述一個已刪除的活動不同。

具有每一個反應實施例中刪除,並且新的:

{ 
    "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" 
} 
  • 我訂閱下面平坦飼料聚集飼料。
  • 我通過平面Feed添加和刪除活動。
  • 對添加和刪除活動時,預訂平面和聚合Feed都會返回相同的消息。

挑戰,我面對:

  • 當我刪除一個活動(通過foreign_id) - 爲什麼會出現5個IDS刪除陣列?
  • 我需要讓foreign_id反映應用程序中的變化,同時從gestream.io中消化套接字消息。當完整的對象被髮送時,這對於新活動很好(參見上面的例子)。但是,對於已刪除的活動,由於僅發送了ids數組,因此它們缺失。

潛在途徑:

  • 我可以以某種方式配置我getstream王菲訂閱或配置來(也)返回foreign_ids爲刪除的項目?
  • 我可以試着從那裏獲取socket信息,但這看起來很荒謬。

非常感謝。

回答

1

通過foreign_id刪除活動會刪除Feed中給定foreign_id的所有活動。這是使用foreign_id字段的主要優點之一,它允許級聯刪除一組活動。 (例如,Post and Likes是一個典型的用例,您希望刪除一個Post和所有與其相關的Like)。

使用foreign_id的另一個優點是您不必跟蹤由Stream生成的ID。

您應該能夠通過爲唯一的foreign_id字段選擇一個值(例如數據庫中的對象ID)來解決您的第一個問題,這樣您仍然可以輕鬆地刪除並避免級聯刪除行爲。

關於第二個問題,如果您基於實時更新更新UI,這也意味着您已經從相同的源中讀取,並且您擁有其ID和foreign_ids的活動列表。從activity_id中選擇活動應該只是在內存映射中創建某種內容(例如,爲您的DOM添加data-activity_id屬性)。

+0

超級快速回答 - 謝謝。廣告1)通過foreign_id刪除很酷。廣告2)正在展示和處理彙總的Feed。所以這些ID在這裏沒有用處。但我也可以檢索平面Feed,並從那裏構建一個HashMap。你知道聚合飼料案的更好的主意嗎? –