Grundkonzepte
Ziele und Stichwörter sind verschiedene Dinge
Ein Ziel ist ein Konto, das Sie beobachten; Sie erhalten alles, was es tut, oder nur die Ereignistypen, die Sie wählen. Ein Stichwort ist eine Suchanfrage, die Sie über ganz X hinweg beobachten; Sie erhalten passende Beiträge von jedem, als search.match-Ereignisse. Ziele werden über das Handle identifiziert, Stichwörter über den Anfragetext, und ein Schlüssel hält beliebig viele von beiden bis zu den Obergrenzen seines Tarifs.
Ein Konto ist seine ID, nicht sein Handle
Sie überwachen ein Konto, erkennbar an seiner numerischen X-ID (id eines Targets). Ein Konto kann sein Handle (screen_name) oder seinen Anzeigenamen jederzeit ändern: Seine Ereignisse kommen weiter bei Ihnen an, spätere Ereignisse tragen das neue Handle in target.screen_name, und ein profile.screen_name- oder profile.name-Ereignis meldet die Änderung. Schlüsseln Sie Ihre Daten nach id. Überall, wo die API ein Konto erwartet, können Sie es per user_id, aktuellem Handle oder einem früheren Handle angeben.
Lieferung in zwei Phasen: erst erstellen, dann aktualisieren
Manche Beitragsereignisse werden in zwei Frames geliefert. Der erste, op: "create", trägt das Wesentliche – die Beitrags-ID, den Autor und den Text –, damit Sie sofort darauf handeln können. Einen Moment später trifft dieselbe Ereignis-ID erneut mit op: "update" ein, nun mit Medien, dem zitierten oder beantworteten Original, Zählern und dem Rest. Ereignisse, die bei der ersten Sichtung vollständig sind, haben keinen zweiten Frame; GET /v1/meta/event-types sagt, welche Typen einen haben können.
create. Brauchen Sie den ganzen Beitrag, warten Sie auf update zur selben id. So oder so: Schlüsseln Sie Ihren Speicher nach id und lassen Sie ein späteres update überschreiben, was Sie behalten haben. Der Typ ändert sich zwischen den beiden Frames nur auf eine Weise: Ein erstes tweet.create mit kind_final: false kann zu tweet.quote werden. Behandeln Sie Originalbeiträge und Zitate unterschiedlich, ordnen Sie einen solchen Frame erst ein, wenn sein update eintrifft.Mindestens einmal, nie genau einmal
Jedes überwachte Konto wird von mehreren unabhängigen Pfaden gleichzeitig beobachtet, damit ein ausfallender Pfad Sie nichts kostet. Der erste, der eine bestimmte Änderung meldet, gewinnt und wird zum Ereignis; die anderen werden als Bestätigung vermerkt statt erneut geliefert. Über einen Reconnect hinweg kann Ihnen jedoch ein Ereignis begegnen, das Sie bereits haben. Deduplizieren Sie anhand von id.
Position und Replay
Jedes Ereignis trägt eine sid – seine Position in unserem Log. Speichern Sie die zuletzt verarbeitete dauerhaft; beim Reconnect übergeben Sie sie als ?last_id=, und wir senden alles danach, bevor wir live weitermachen. Das Log hält 24 Stunden, und ein einzelner Reconnect spielt höchstens 5.000 Ereignisse nach. Ziele oder Stichwörter, die Sie bei offenem Socket hinzufügen, fließen innerhalb von 30 Sekunden darauf ein; Sie müssen sich nicht neu verbinden.