2016-08-04 12 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" 
} 
  • 내가 평평한 피드를 다음에 집계 피드에 가입.
  • 플랫 피드를 통해 활동을 추가하고 제거합니다.
  • 활동 추가 및 제거시 플랫 및 집계 피드에 대한 가입이 모두 동일한 메시지를 반환합니다.

도전 내가 직면하고있다 :

  • 내가 (foreign_id 통해) ONE 활동을 제거 - 왜 삭제 배열에 5 개 ID를 나타 납니까?
  • gestream.io에서 소켓 메시지를 소화하는 동안 app의 변경 사항을 반영하기 위해 foreign_id가 있어야합니다. 이것은 전체 객체가 전송 될 때 새로운 액티비티에 대해 잘 동작합니다 (위의 예 참조). 그러나 삭제 된 활동에 대해서는 ids의 배열이 전송되기 때문에 누락되었습니다.

잠재적 인 접근 방법 :

  • 어떻게 든 (도) 삭제 된 항목에 대한 foreign_ids를 돌려 내 getstream 페이 가입 또는 설정을 구성 할 수 있습니까?
  • 소켓 메시지를 기반으로 추가로 ids을 가져올 수는 있지만 이는 거의 바보 같습니다.

대단히 감사합니다.

답변

1

foreign_id을 통해 활동을 제거하면 해당 foreign_id가있는 모든 활동이 피드에 삭제됩니다. 이것은 foreign_id 필드를 사용하는 주요한 단점 중 하나이며, 활동 그룹에 계단식 삭제를 허용합니다. (예 : Post와 Likes는 하나의 Post와 그와 관련된 모든 Likes를 삭제하려는 전형적인 유스 케이스입니다.)

foreign_id를 사용하는 또 다른 장점은 스트림에서 생성 한 ID를 추적 할 필요가 없다는 것입니다.

foreign_id 필드의 값 (예 : 데이터베이스의 개체 ID)을 선택하면 쉽게 삭제할 수 있고 연속 된 삭제 동작을 피할 수있는 방법으로 첫 번째 문제를 해결할 수 있어야합니다.

두 번째 문제에 대해서는 실시간 업데이트를 기반으로 UI를 업데이트하는 경우 이미 동일한 피드에서 읽었으며 해당 ID 및 foreign_ids와 함께 활동 목록이 있음을 의미합니다. activity_id에서 액티비티를 선택하는 것은 일종의 메모리 맵을 생성하는 것일뿐입니다 (예 : DOM에 data-activity_id 애트리뷰트 추가).

+0

슈퍼 빠른 답변 - 감사합니다. 광고 1) foreign_id를 통한 삭제는 멋지다. 광고 2) 집계 된 피드를 표시하고 작업하고 있습니다. 따라서 ID는 유용하지 않습니다. 하지만 플랫 피드를 가져 와서 거기에서 해시 맵을 만들 수도 있습니다. 집계 된 피드 케이스에 대해 더 잘 알고 있습니까? –