핵심 개념
모니터링 대상과 키워드는 다른 것입니다
모니터링 대상은 지켜보는 계정이며, 그 계정이 하는 모든 일, 또는 고른 이벤트 타입만 받습니다. 키워드는 X 전체에서 감시하는 쿼리이며, 누구의 게시물이든 일치하면 search.match 이벤트로 받습니다. 모니터링 대상은 핸들로, 키워드는 쿼리 텍스트로 식별되며, 키 하나는 플랜 상한까지 각각을 원하는 만큼 보유할 수 있습니다.
계정은 핸들이 아니라 id로 정해집니다
모니터링하는 것은 계정이며, 숫자형 X id(Target의 id)로 식별됩니다. 계정은 언제든 핸들(screen_name)이나 표시 이름을 바꿀 수 있습니다. 그래도 이벤트는 계속 전달되고, 이후 이벤트는 target.screen_name에 새 핸들을 담으며, profile.screen_name 또는 profile.name 이벤트가 무엇이 바뀌었는지 알려 줍니다. 기록의 키는 id로 잡으십시오. API에서 계정을 지정하는 곳에서는 user_id, 현재 핸들, 이전 핸들 중 무엇으로든 지정할 수 있습니다.
2단계 전달: create 다음 update
일부 게시물 이벤트는 두 프레임으로 전달됩니다. 첫 번째 op: "create"에는 게시물 id, 작성자, 텍스트 같은 핵심 정보만 담겨 있어 즉시 대응할 수 있습니다. 잠시 뒤 같은 이벤트 id가 op: "update"로 다시 도착하며, 이때는 미디어, 인용 또는 답글 대상 원본, 각종 수치, 그 밖의 나머지가 담깁니다. 처음 확인될 때 이미 완전한 이벤트에는 두 번째 프레임이 없습니다. 어떤 타입에 두 번째 프레임이 있을 수 있는지는 GET /v1/meta/event-types가 알려줍니다.
create에 반응하십시오. 전체 게시물이 필요하면 같은 id의 update를 기다리십시오. 어느 쪽이든 저장소의 키를 id로 잡고, 나중에 오는 update가 기존 데이터를 덮어쓰게 하십시오. 두 프레임 사이에 타입이 바뀌는 경우는 한 가지뿐입니다. kind_final: false인 첫 tweet.create가 tweet.quote가 될 수 있습니다. 원글과 인용을 다르게 처리한다면 그런 프레임은 update가 도착한 뒤에 분류하십시오.최소 1회 전달이며, 정확히 1회는 아닙니다
모니터링 대상 계정마다 여러 독립적인 경로가 동시에 지켜보므로, 경로 하나가 실패해도 손해가 없습니다. 특정 변경을 가장 먼저 보고한 경로가 이벤트가 되고, 나머지는 다시 전달되지 않고 보강 근거로 기록됩니다. 그러나 재연결 시에는 이미 받은 이벤트를 다시 볼 수 있습니다. id로 중복을 제거하십시오.
위치와 리플레이
모든 이벤트에는 저희 로그에서의 위치인 sid가 있습니다. 마지막으로 처리한 값을 보관해 두고, 재연결 시 ?last_id=로 전달하면 그 이후의 모든 이벤트를 보낸 뒤 실시간 전달을 재개합니다. 로그는 24시간 동안 보관되며, 한 번의 재연결로 최대 5,000개의 이벤트를 리플레이합니다. 소켓이 열린 상태에서 추가한 모니터링 대상이나 키워드는 30초 이내에 그 소켓으로 흐르기 시작하므로 재연결할 필요가 없습니다.