DE202019005788U1 - Progressive API-Antworten - Google Patents

Progressive API-Antworten Download PDF

Info

Publication number
DE202019005788U1
DE202019005788U1 DE202019005788.9U DE202019005788U DE202019005788U1 DE 202019005788 U1 DE202019005788 U1 DE 202019005788U1 DE 202019005788 U DE202019005788 U DE 202019005788U DE 202019005788 U1 DE202019005788 U1 DE 202019005788U1
Authority
DE
Germany
Prior art keywords
content
response
content item
content items
fragments
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202019005788.9U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Twitter Inc
Original Assignee
Twitter Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Twitter Inc filed Critical Twitter Inc
Publication of DE202019005788U1 publication Critical patent/DE202019005788U1/de
Expired - Lifetime legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/44Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/538Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Library & Information Science (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Computer Hardware Design (AREA)
  • Primary Health Care (AREA)
  • Health & Medical Sciences (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

System, umfassend:
einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervorrichttungen umfasst, wobei der Server ausgelegt ist, eine Social-Messaging-Plattform zu implementieren;
eine Anwendervorrichtung; und
Client-Software der Social-Messaging-Plattform, die auf der Anwendervorrichtung läuft, wobei die Client-Software ausgelegt ist, Operationen durchzuführen, umfassend:
Senden einer Inhaltsanfrage an den Server;
Empfangen einer Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf der Anwendervorrichtung, wobei die mehreren Fragmente die gesamte Antwort darstellen, wobei die Antwort Inhaltselemente und Metadaten aufweist, die die Inhaltselemente beschreiben, und wobei jedes Inhaltselement renderbar und durch ein oder mehrere Datenobjekte definiert ist;
schrittweises Rendem, in einen Anzeigepuffer, der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, aufweisend Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge, die durch die Metadaten bestimmt wird, wobei der Anzeigepuffer eine Datenstruktur in einem Speicher der Anwendervorrichtung ist; und
Anzeigen einer Gesamtheit oder eines Teils des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Diese Patentschrift bezieht sich auf Social-Messaging-Plattfolmen (Plattformen für soziale Nachrichten) und insbesondere auf Technologien zum schrittweisen Empfangen und Rendern von Fragmenten einer Antwort auf eine Inhaltsanfrage von einer Social-Messaging-Plattform.
  • Social-Messaging-Plattfomien und mit einem Netzwerk verbundene persönliche Rechenvorrichtungen ermöglichen Anwendern, Inhalt zu erstellen und über mehrere Vorrichtungen in Echtzeit zu teilen.
  • Beliebte Social-Messaging-Plattformen sehen im Allgemeinen Funktionalität für Anwender vor, Nachrichten sowohl synchron als auch asynchron zu entwerfen und an andere Anwender zu versenden. Beispiele für beliebte Social-Messaging-Plattformen weisen Facebook, Pinterest und Twitter auf. („Facebook“ ist ein Markenzeichen von Facebook, Inc. „Pinterest“ ist ein Markenzeichen von Pinterest, Inc. „Twitter“ ist ein Markenzeichen von Twitter, Inc.)
  • Im Allgemeinen, wenn Client-Software auf einer Rechenvorrichtung eine Inhaltsanfrage an eine Social-Messaging-Plattform sendet, muss die Client-Software auf den Empfang einer vollständigen Antwort auf die Anfrage warten, bevor eine Antwort dem Anwender der Vorrichtung präsentiert wird.
  • KURZDARSTELLUNG
  • Diese Patentschrift beschreibt Technologien, die Client-Software ermöglichen, Fragmente einer Antwort auf eine Inhaltsanfrage von einer Social-Messaging-Plattform zu empfangen und zu rendern.
  • Ein beispielhaftes System weist einen Server auf, der ausgelegt ist, eine Social-Messaging-Plattfonn zu implementieren, eine Anwendervorrichtung und Client-Software der Social-Messaging-Plattform, die auf der Anwendervorrichtung läuft. Die Client-Software ist ausgelegt, eine Inhaltsanfrage an den Server zu senden. Die Client-Software empfängt eine Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf der Anwendervorrichtung. Die mehreren Fragmente stellen die gesamte Antwort dar. Die Antwort weist Inhaltselemente und Metadaten, die die Inhaltselemente beschreiben, auf. Jedes Inhaltselement ist renderbar und durch ein oder mehrere Datenobjekte definiert. Die Client-Software rendert die Inhaltselemente in den Fragmenten schrittweise in einen Anzeigepuffer, wie die Fragmente empfangen werden. Dies weist Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge auf, die durch die Metadaten bestimmt wird. Der Anzeigepuffer ist eine Datenstruktur in einem Speicher der Anwendervorrichtung. Die Client-Software zeigt dann die Gesamtheit oder einen Teil des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung an.
  • Diese Patentschrift verwendet den Begriff „ausgelegt zum“ in Verbindung mit Systemen, Einrichtungen und Computerprogrammkomponenten. Für ein System aus einem oder mehreren Computern, das ausgelegt ist, bestimmte Operationen oder Maßnahmen durchzuführen, bedeutet dies, dass auf dem System Software, Firmware, Hardware oder eine Kombination davon installiert ist, die in Betrieb das System veranlasst, die Operationen oder Maßnahmen durchzüfahren. Für ein oder mehrere Computerprogramme, die ausgelegt sind, bestimmte Operationen oder Maßnahmen durchzuführen, bedeutet dies, dass das eine oder die mehreren Programme Anweisungen aufweisen, die, wenn von der Datenverarbeitungseinrichtung ausgeführt, die Einrichtung veranlassen, die Operationen oder Maßnahmen durchzuführen. Für einen Spezialzweck-Logikschaltkreis, der ausgelegt ist, bestimmte Operationen oder Maßnahmen durchzuführen, bedeutet dies, dass der Schaltkreis elektronische Logik aufweist, die die Operationen oder Maßnahmen durchführt.
  • Der in dieser Anmeldung beschriebene Gegenstand kann in besonderen Ausführungsformen implementiert werden, um so einen oder mehrere der folgenden Vorteile zu erzielen. Anwendervorrichtungen auf einer Verbindung geringer Bandbreite können progressiv Inhaltselemente in einer Antwort rendern, bevor die gesamte Antwort empfangen wird. Dies ist von Vorteil, da auf einer Verbindung geringer Bandbreite Empfangen einer gesamten Antwort mehrere Rundläufe in Anspruch nehmen kann, d.h., die Anzahl von Rundläufen, die eine TCP-Verbindung benötigt, um die gesamte Antwortnutzlast zuzustellen.
  • Darüber hinaus können Anwendervorrichtungen auf einer Verbindung hoher Bandbreite sowohl kleine als auch große Antworten in einem einzigen Rundlauf empfangen und rendern. Mit anderen Worten, der in dieser Patentschrift beschriebene Gegenstand optimiert Antwortzeit unabhängig von Bandbreite eines Anwenders.
  • Die Einzelheiten einer oder mehrerer Ausführungsformen des Gegenstands dieser Patentschrift sind in den beiliegenden Zeichnungen und der folgenden Beschreibung dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlicher.
  • Figurenliste
    • 1 ist ein Diagramm einer beispielhaften Social-Messaging-Plattform.
    • 2 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Strukturieren von Antworten auf Inhaltsanfragen.
    • 3 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum schrittweisen Empfangen und Rendern von Fragmenten einer Antwort auf eine Inhaltsanfrage.
    • 4 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Empfangen und Rendem eines Inhaltselements, das zwei oder mehr Fragmente einer Antwort überspannt.
  • In den verschiedenen Zeichnungen geben gleiche Bezugszeichen und Bezeichnungen gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 veranschaulicht eine beispielhafte Online-Social-Messaging-Plattforn 100 und beispielhafte Anwendervorrichtungen 104a-104n, die ausgelegt sind, mit der Plattform über ein oder mehrere verdrahtete oder drahtlose Datenkommunikationsnetzwerke 120 zu interagieren. Progressive Renderingmodule 108a-108n, die in Client-Software 106a-106n implementiert sind, sind, wie später beschrieben wird, ausgelegt, schrittweise Inhaltselemente, z.B. Nachrichten, von Plattformservern zu empfangen und zu rendern.
  • Anwender 102a-102n der Plattform verwenden die Anwendervorrichftungen 104a-104n, auf welchen die Client-Software installiert ist, um die Plattform zu verwenden. Anwender können mit der Social-Messaging-Plattform unter Verwendung der entsprechenden Client-Software auf ihren entsprechenden Anwendervorrichftungen interagieren.
  • Ein Anwender kann ein Kontoinhaber eines Kontos oder ein autorisierter Anwender eines Kontos auf der Plattform sein. Die Plattform kann Millionen von Konten von Einzelpersonen, Geschäften oder anderen Einheiten haben.
  • In manchen Implementierungen erlaubt die Plattform Verwendung der Plattform durch Anwender, die keine Kontoinhaber sind oder die nicht bei einem Konto der Plattform angemeldet sind. Wenn die Plattform Verwendung durch solche Anwender erlaubt, kann die Plattform einem solchen Anwender erlauben, Nachrichten zu versenden oder eine andere Funktionalität der Plattform zu verwenden, indem der Anwender mit einem vorläufigen Konto oder einer vorläufigen Kennung verknüpft wird.
  • Eine Anwendervorrichtung kann jede mit dem Internet verbundene Vorrichtung sein, z.B. ein Laptop oder Desktop Computer, ein Smartphone oder ein elektronisches Tablet. Die Anwendervorrichtung kann durch ein mobiles Netzwerk, durch einen Intemet-Dienstanbieter (ISP, Internet Service Provider) oder auf andere Weise mit dem Internet verbunden sein.
  • Jede Anwendervorrichtung ist mit Software ausgelegt, die als ein Client oder als Client-Software 106a-106n bezeichnet wird, die in Betrieb auf die Plattform zugreifen kann, sodass ein Anwender Nachrichten versenden und empfangen kann, die Streams des Anwenders ansehen und verwalten kann und Listen von Inhaltselementen ansehen und mit diesen interagieren kann. Auf einer bestimmten Anwendervorrichtung kann der Client ein Webbrowser oder ein HTML (Hypertext Markup Language) Dokument sein, das von einem Webbrowser gerendert wird. Oder der Client kann JavaScript Code oder Java Code sein oder diesen aufweisen. Oder der Client kann auch zweckbestimmte Software sein, z.B. eine installierte App oder installierte Anwendung, die gestaltet ist, insbesondere mit der Plattform zu arbeiten. Oder der Client kann zum Beispiel eine Kurznachrichtendienst-(SMS, Short Messaging Service) Schnittstelle, eine sofortige Nachrichtenübermittlungs-(Instant Messaging) Schnittstelle, eine auf E-Mail basierte Schnittstelle oder eine auf API Funktion basierte Schnittstelle sein.
  • Der Client zeigt den gesamten oder einen Teil eines Anzeigepuffers, der Nachrichten und Streams von der Plattform aufweist, in einem Fenster einer grafischen Anwenderoberfläche auf einer Anzeige der Anwendervorrichtung an. Der Anzeigepuffer ist ein Teil eines Speichers, der Daten, z.B. eine Bitmap, enthält, die zum Antreiben der Anzeige der Anwendervorrichtung verwendet werden. Die Nachrichten und Streams in dem Anzeigepuffer können in Bitmapform gerendert werden oder sie können in einer teilweise gerenderten oder vorverarbeiteten Form vorliegen, die spontan gerendert werden kann, wenn sie in eine Ansichtsfenster der Anzeige bewegt wird.
  • Die grafische Anwenderoberfläche des Clients kann ein Scroll-Element oder Scroll-Funktionalität aufweisen. Ein Scroll-Element ist eine Steuerung, die Eingabe von einem Anwender des Clients empfängt. Wenn zum Beispiel die Anwendervorrichtung ein Desktop Computer mit einer Maus ist, kann der Anwender auf das Scroll-Element klicken und es ziehen. Wenn die Anwendervorrichtung ein Smartphone ist, kann der Anwender einfach mit einem Finger über den Bildschirm der Anwendervorrichtung wischen. In Antwort auf ein Klicken und Ziehen oder ein Wischen ändert der Client den Teil des Anzeigepuffers, der vom Client angezeigt wird.
  • Der Client weist progressive Renderingmodule 108a-108n auf. Die progressiven Renderingmodule sind ausgelegt, schrittweise Fragmente von Inhaltselementen zu empfangen und diese Fragmente, wie sie empfangen werden, progressiv zu rendern.
  • Die Online-Social-Messaging-Plattform ist auf einem oder mehreren Computern an einem oder mehreren Orten implementiert, die als ein oder mehrere Server arbeiten, die Verbindungen über verdrahtete oder drahtlose Netzwerke 120 von vielen verschiedenen Arten von Anwendervorrichftungen unterstützen. Die Plattform kann viele Millionen von Konten aufweisen und es können jederzeit hunderttausende bis Millionen von Verbindungen zwischen Clients und der Plattform errichtet oder in Verwendung sein.
  • Die Plattform und der Client sind ausgelegt, Anwender zu ermöglichen, die Plattform zu verwenden, um Nachrichten 122 an die Plattform zu versenden und die Plattform zum Empfangen von Nachrichten 124 zu verwenden, die von anderen Anwendern versendet wurden.
  • In manchen Implementierungen sieht die Plattform Einrichtungen für Anwender vor, um Nachrichten direkt an einen oder mehrere andere Anwender der Plattform zu senden, wodurch der Sender und die Empfänger einen privaten Austausch von Nachrichten führen können.
  • Die Plattform ist ausgelegt, Inhalt, im Allgemeinen Nachrichten, für einen Anwender in einem Homefeed-Nachrichtenstream vorzusehen. Die Nachrichten sind im Allgemeinen Nachrichten von Konten, welchen der Anwender folgt, was bedeutet, dass sich der Empfänger registriert hat, Nachrichten zu empfangen, die von dem gefolgten Konto versendet werden, und optional Inhalt, mit dem solche Konten verknüpft sind, diesen z.B. billigen. Optional ist die Plattform ausgelegt, in Homefeed-Stream Nachrichten eines Empfänger-Anwenders aufzunehmen, die die Plattform wahrscheinlich für interessant für den Empfänger hält, z.B. Nachrichten über Themen von besonderem aktuellen Interesse, wie durch die Anzahl von Nachrichten dargestellt, die durch Plattfonnanwender zu diesem Thema versendet wurden, oder Nachrichten, die zu den Themen versendet wurden, die scheinbar für den Empfänger von Interesse sind, wie durch Nachrichten gezeigt, die der Empfänger versendet hat oder für die er sich interessiert hat, wie auch ausgewählte Werbungen, Ankündigungen öffentlicher Dienste, Werbeinhalt oder dergleichen.
  • Die Plattform ist ausgelegt, Anwendern zu ermöglichen, Nachrichten in Echtzeit, d.h. mit einer minimalen Verzögerung, auszutauschen. Die Plattform ist auch ausgelegt, Anwendern zu ermöglichen, auf zuvor, in der Größenordnung von Stunden oder Tagen oder sogar länger, versendete Nachrichten zu antworten. Die Plattform ist ausgelegt, versendete Nachrichten einem oder mehreren anderen Anwendern innerhalb eines kurzen Zeitrahmens anzuzeigen, um zu erleichtern, was im Wesentlichen eine Live-Konversation zwischen den Anwendern sein kann.
  • Die Plattform ist auch ausgelegt, Anwendern zu erlauben, nach Inhalt auf der Plattform zu suchen. Eine Suche kann Nachrichten von mehreren verfolgten oder öffentlichen Konten zurücksenden, die ein oder mehrere Suchkriterien erfüllen, z.B. eine oder mehrere Suchbegriffe oder Schlüsselphrasen. Die Plattform ist auch ausgelegt, Anwendern zu erlauben, nach Konten eines anderen Anwenders zu suchen.
  • Daher weist die grundlegende Benachrichtigungsfunktionalität der Plattform mindestens Senden neuer Nachrichten, Vorsehen von Nachrichten-Streams auf Client-Anfrage, Verwalten von Konten, Verwalten von Verbindungen zwischen Konten, Nachrichten und Streams und Empfangen von Partizipationsdaten von Clients auf, die angeben, wie Anwender des Clients an Nachrichten und möglicherweise anderem Inhalt partizipieren. Die Plattform indiziert auch Inhaltselemente und greift auf Daten zu, die den Zugang der Anwender auf Inhalt charakterisieren, und kann die indizierten Daten für die Kontoinhaber vorsehen.
  • Im Allgemeinen enthält eine Nachricht, die an die Plattform gesendet wird, Daten, die Inhalt präsentieren, der von dem Verfasser der Nachricht vorgesehen ist. Die Nachricht kann ein Fall eines Container-Datentyps sein, der die Inhaltsdaten speichert. Die Arten von Daten, die in einer Nachricht gespeichert werden können, weisen zum Beispiel Text, Grafik, Bilder, Video und Computercode, z.B. Uniform Resource Locators (URLs, einheitliche Ressourcenzeiger), auf. Nachrichten können auch Schlüsselphrasen, z.B. Hashtags, aufweisen, die bei der Kategorisierung von Nachrichten oder Zuordnung von Nachrichten zu Themen hilfreich sein können. Nachrichten können auch Metadaten aufweisen, die von dem Nachrichten verfassenden Kontoinhaber bearbeitet werden können oder nicht, abhängig davon, was die Plattform zulässt. Beispiele für Nachrichtenmetadaten weisen eine Zeit und ein Datum der Erstellung und einen geografischen Ort der Anwendervorrichtung auf, wenn diese die Nachricht unterbreitet. In manchen Implementierungen wird die Art der Metadaten, die von einem Client für die Plattform vorgesehen ist, durch Vertraulichkeitseinstellungen bestimmt, die von dem Anwender oder dem Kontoinhaber kontrolliert werden.
  • Nachrichten, die von einem Kontoinhaber zusammengestellt werden, können auf andere Konten, andere Nachrichten oder beide verweisen. Zum Beispiel kann eine Nachricht in Antwort auf eine andere Nachricht zusammengestellt werden, die von einem anderen Konto zusammengestellt wird. Eine Nachricht kann auch von einem Anwender in Antwort auf eine Nachricht zusammengestellt werden, die ursprünglich von dem Anwender gesendet wurde. Nachrichten können auch neuerliche Veröffentlichungen einer Nachricht sein, die von einem anderen Konto zusammengestellt und empfangen wurde. Im Allgemeinen kann ein Konto, auf das in einer Nachricht verwiesen wird, als sichtbarer Inhalt in der Nachricht erscheinen, z.B. der Name des Kontos, und kann auch als Metadaten in der Nachricht erscheinen. Infolgedessen können die Konten, auf die verwiesen wird, in der Plattform interaktiv sein. Zum Beispiel können Anwender mit Kontonamen interagieren, die in ihrem Nachrichten-Stream erscheinen, um zu den Nachrichten-Streams dieser Konten zu navigieren. Die Plattform erlaubt Anwendern auch, bestimmte Nachrichten als privat zu bezeichnen; eine private Nachricht erscheint nur in den Nachrichten-Streams der Zusammenstellungs- und Empfängerkonten.
  • Im Allgemeinen sind Nachrichten Mikroblog-Sendungen, die sich von E-Mail-Nachrichten in vielerlei Hinsicht unterscheiden, zum Beispiel darin, dass ein Verfasser einer Mikroblog-Sendung nicht unbedingt spezifizieren oder sogar wissen muss, wer die Empfänger der Nachricht sein werden.
  • Ein Stream ist ein Stream von Nachrichten auf der Plattform, die eine oder mehrere Stream-Kiiterien erfüllen. Ein Stream kann durch die Stream-Kriterien definiert sein, Nachrichten aufzuweisen, die von einem Konto oder mehreren Konten gesendet werden. Zum Beispiel kann der Inhalt eines Streams für einen anfragenden Kontoinhaber eine oder mehrere von (i) Nachrichten, die von diesem Kontoinhaber zusammengestellt wurden, (ii) Nachrichten, die von den anderen Konten zusammengestellt wurden, welchen der angefragte Kontoinhaber folgt, (iii) Nachrichten, die von anderen Konten verfasst wurden, die auf den angefragten Kontoinhaber verweisen, oder (iv) Nachrichten, die von dritten Parteien für eine Aufnahme in den Nachrichten-Stream des Kontoinhabers gesponsert werden, aufweisen. Die Nachrichten eines Streams können chronologisch nach Zeit und Datum des Verfassens oder umgekehrt chronologisch gereiht sein. Streams können auch anders gereiht sein, z.B. nach einer rechnerisch vorhergesagten Relevanz für den Kontoinhaber oder gemäß einer Kombination aus Zeit- und Relevanzbewertung.
  • Ein Stream kann möglicherweise eine große Anzahl von Nachrichten aufweisen. Sowohl für Verarbeitungseffizienz als auch das praktische Betrachten durch den anfragenden Kontoinhaber identifiziert die Plattform im Allgemeinen einen Teilsatz von Nachrichten, die die Stream-Kriterien erfüllen, der an einen anfragenden Client gesendet wird, sobald der Stream erzeugt ist. Der Rest der Nachrichten in dem Stream wird in einem Stream-Archiv gehalten, auf das eine Client-Anfrage zugreifen kann.
  • Zustellmodule 112a-112m auf Plattformservern 110a-110m errichten Nachrichten-Streams und sehen sie für anfragende Clients vor, zum Beispiel durch einen Frontend-Server. In Antwort auf eine Anfrage nach einem Stream errichtet ein entsprechendes Zustellungsmodul entweder den Stream in Echtzeit oder greift von einem Stream-Archiv auf einen Teil oder die Gesamtheit eines Streams zu, der bereits erzeugt wurde. Das Zustellungsmodul speichert erzeugte Streams im Stream-Archiv. Ein Kontoinhaber kann einen seiner eigenen Streams oder die Streams eines anderen Kontos anfragen, auf die er, basierend auf Sicherheitseinstellungen, zugreifen kann. Wenn ein Stream eine große Anzahl von Nachrichten aufweist, identifiziert das Zustellungsmodul im Allgemeinen einen Teilsatz der Nachrichten, um ihn an einen anfragenden Client zu senden, wobei in diesem Fall der Rest der Nachrichten in einem Stream-Archiv gehalten wird und auf Client-Anflage gesendet wird.
  • Die Zustellungsmodule können Antworten auf Inhaltsanfragen so strukturieren, dass Fragmente von Antworten von dem Client schrittweise empfangen, gerendert und angezeigt werden können. Dieser Prozess wird unter Bezugnahme auf 2 ausführlicher beschrieben.
  • 2 ist ein Ablaufdiagramm eines beispielhaften Prozesses 200 zum Strukturieren von Antworten auf Inhaltsanfragen. Der Prozess kann von einem Plattformserver der Online-Social-Messaging-Plattform von 1 durchgeführt werden. Insbesondere kann der Prozess von einem Zustellungsmodul auf dem Plattformserver durchgeführt werden.
  • Das Zustellungsmodul erhält Inhaltselemente, die eine Inhaltsanfrage von einem Client beantworten, und Metadaten, die diese Inhaltselemente beschreiben (210).
  • Das Zustellungsmodul platziert Metadaten, die die Inhaltselemente beschreiben, in einem Anfangsfragment der Antwort (220). Die Metadaten können eine Sequenzkennung für jedes Inhaltselement aufweisen. Eine Sequenzkennung spezifiziert einen Ort in einem Anzeigepuffer einer Anwendervorrichtung, wo das Inhaltselement relativ zu anderen Inhaltselementen gerendert werden sollte. Da sich die Metadaten in einem Anfangsfragment der Antwort befinden, kann der Client Inhaltselemente an angegebenen Stellen im Anzeigepuffer rendern, bevor der Client alle Inhaltselemente in der Antwort empfängt.
  • Das Zustellungsmodul platziert die Inhaltselemente nach den Metadaten (230). Insbesondere platziert es die Daten, die zum Rendem jedes Inhaltselements notwendig sind, in dem einen oder den mehreren Datenobjekten, die das Inhaltselement definieren, oder in Datenobjekten, die Inhaltselemente definieren, die dem Inhaltselement in der Antwort vorangehen. Durch derartiges Strukturieren der Daten stellt das Zustellungsmodul sicher, dass der Client alle Daten empfängt, die er benötigt, um ein bestimmtes Inhaltselement zu der Zeit zu rendern, zu der der Client dieses Inhaltselement empfängt. Folglich kann der Client ein oder mehrere Inhaltselemente rendern und anzeigen, bevor alle Inhaltselemente empfangen sind.
  • 3 ist ein Ablaufdiagramm eines beispielhaften Prozesses 300 zum schrittweisen Rendern von Inhaltselementen. Der Prozess kann von einem Client auf eine Anwendervorrichtung empfangen werden.
  • Der Client sendet eine Anfrage nach Inhalt an einen Hostserver (310).
  • Der Hostserver sendet eine strukturierte Antwort an den Client. In dem Szenario von Interesse empfängt der Client die Antwort in mehreren Fragmenten, die gemeinsam die gesamte Antwort darstellen (320). Der Client erhält die Fragmente von einem Netzwerkstapel auf der Anwendervorrichtung, z.B. von einer Transportschicht, bevor der Netzwerkstapel die gesamte Antwort an den Client vorsieht.
  • Die Transportschicht eines Netzwerkstapels ist eine von mehreren Schichten von Software, die gemeinsam Datenkommunikationsdienste für Anwendungen vorsehen, die auf der Anwendervorrichtung laufen. Insbesondere implementiert die Transportschicht einen Satz von Protokollen, die Host-zu-Host-Kommunikationsdienste für Anwendungen vorsehen. Ein Beispiel eines Transportschichtprotokolls ist das Übertragungssteuerungsprotokoll (TCP, Transmission Control Protocol). Ein anderes Beispiel ist das Anwender-Datagrammprotokoll (UDP, User Datagram Protocol). Die von dem Client erhaltenen Fragmente bestehen aus einem oder mehreren Segmenten oder einem oder mehreren Datagrammen, abhängig von dem spezifischen verwendeten Protokoll.
  • Die Fragmente der Antwort enthalten Inhaltselemente und Metadaten, die die Inhaltselemente beschreiben. Jedes Inhaltselement ist zur Anzeige renderbar und ist durch ein oder mehrere Datenobjekte definiert. Zum Beispiel kann ein bestimmtes Inhaltselement durch ein JavaScript Objektsnotations- („JSON“) Objekt definiert sein. JSON ist ein Textformat für die Serialisierung strukturierter Daten. Es verwendet für Menschen lesbaren Text zum Übertragen von Datenobjekten, die aus Attribut-Wert-Paaren und Array-Datentypen bestehen.
  • Die Metadaten, die die Inhaltselemente beschreiben, können eine Sequenzkennung für jedes Inhaltselement aufweisen. Die Sequenzkennung für ein bestimmtes Inhaltselement spezifiziert eine Stelle im Anzeigepuffer des Inhaltselements relativ zu anderen Inhaltselementen in der Antwort und relativ zu Inhaltselementen in Antworten, die zuvor im Anzeigepuffer gerendert wurden. Zum Beispiel könnte die Sequenzkennung spezifizieren, dass ein Inhaltselement „unter“ einem ersten Inhaltselement und „über“ einem zweiten Inhaltselement im Anzeigepuffer gerendert werden sollte. In manchen Implementierungen beruht die Sequenzkennung auf einem Zeitstempel oder ist ein solcher, der mit dem Inhaltselement verknüpft ist. Der Zeitstempel kann eine Zeit angeben, zu der das Inhaltselement relativ zu anderen Inhaltselementen erstellt wurde. In diesem Fall können die Inhaltselemente im Anzeigepuffer in chronologischer oder umgekehrter chronologischer Reihenfolge platziert werden.
  • Alternativ kann die Sequenzkennung für ein Inhaltselement auf einer Schätzung beruhen, wie wahrscheinlich es ist, dass ein Anwender das Inhaltselement möchte oder mit diesem interagiert. Zum Beispiel kann ein Plattfomiserver der Social-Messaging-Plattfonn bestimmen, dass ein bestimmter Anwender wahrscheinlicher ein erstes Inhaltselement als ein zweites Inhaltselement möchte oder mit diesem interagiert. In einem solchen Fall könnte die Sequenzkennung für das erste Inhaltselement spezifizieren, dass es „über“ dem zweiten Inhaltselement platziert wird, sodass es der Anwender wahrscheinlicher sieht oder als erstes sieht. Der Hostserver kann eine Wahrscheinlichkeit bestimmen, dass ein Anwender ein bestimmtes Inhaltselement möchte und mit diesem interagiert, indem er die vorherigen Interaktionen des Anwenders mit ähnlichen Inhaltselementen analysiert.
  • Der Client rendert die Inhaltselemente in den Fragmenten schrittweise in den Anzeigepuffer, wie die Fragmente in einer Reihenfolge im Anzeigepuffer erhalten werden, die durch die Metadaten bestimmt ist (330).
  • Jedes der Inhaltselemente ist einzeln renderbar. Mit anderen Worten, die Daten, die notwendig sind, um jedes Inhaltselement in der Antwort zu rendern, sind in dem einen oder den mehreren Datenobjekten enthalten, die das Inhaltselement definieren, oder in Daten, die früher in der Antwort gefunden werden, z.B. früher in einem vorliegenden Fragment oder in einem zuvor empfangenen Fragment der Antwort. Folglich kann der Client einzelne Inhaltselemente rendern, bevor er eine gesamte Antwort empfängt.
  • In manchen Implementierungen empfängt der Client die Metadaten in einem Anfangsfragment der Antwort und nimmt, zusätzlich zu einer entsprechenden Sequenzkennung für jedes Inhaltselement in der Antwort eine Gesamtzählung an Inhaltselementen in der Antwort auf. Mit diesen Informationen kann der Client die Inhaltselemente im Anfangsfragment rendern und im Anzeigepuffer einen entsprechenden Platzhalter für jedes Inhaltselement in den anschließenden Fragmenten der Antwort aufnehmen. Später kann der Client entsprechende Platzhalter ersetzen, wenn Inhaltselemente aus den anschließenden Fragmenten gerendert werden. Der Client kann die Platzhalter im Anzeigepuffer erstellen, wo die entsprechenden Inhaltselemente erscheinen werden, z.B. an den Stellen, die durch die Sequenzkennungen der Inhaltselemente definiert sind.
  • Beim Rendem eines Inhaltselements identifiziert der Client im Allgemeinen den Anfang eines Datenobjekts oder von Datenobjekten, die das Inhaltselement definieren, und identifiziert anschließend das Ende des Datenobjekts oder der Datenobjekte, die das Inhaltselement definieren. In manchen Fällen sind das Datenobjekt oder die Datenobjekte, die ein bestimmtes Inhaltselement definieren, vollständig in einem einzigen Fragment der Antwort enthalten. In anderen Fällen überspannen sie zwei oder mehr Fragmente.
  • Schließlich zeigt der Client die Gesamtheit oder einen Teil des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung an (340). In Implementierungen, in welchen der Anzeigepuffer Platzhalter hat, kann der Client diese Platzhalter anzeigen, um dem Anwender anzugeben, dass noch einige Inhaltselemente gerendert werden müssen. Die Platzhalter weisen vorzugsweise eine festgesetzte vertikale Höhe auf, wenn sie angezeigt werden, während die eingehenden Inhaltselemente im Allgemeinen eine variable vertikale Höhe haben. Wenn der Client Platzhalter durch Inhaltselemente ersetzt, kann der Client sicherstellen, dass sich Elemente im Ansichtsfenster nicht vertikal verschieben, indem die Größe des Anzeigepuffers in einer Richtung weg vom Ansichtsfenster erweitert wird. Das heißt, wenn der Platzhalter über dem Ansichtsfenster ist, kann der Client veranlassen, dass der Anzeigepuffer nach oben erweitert wird. Wenn der Platzhalter unter dem Ansichtsfenster ist, kann der Client veranlassen, dass der Anzeigepuffer nach unten erweitert wird. Der Client kann basierend auf einer Eingabe durch den Anwender, z.B. basierend auf einer Scroll-Eingabe an der Anwenderoberfläche des Clients, bestimmen, welcher Teil des Anzeigepuffers angezeigt wird.
  • In manchen Implementierungen setzt der Client einen einzelnen Platzhalter anstelle mehrerer benachbarter Platzhalter ein und zeigt diesen an.
  • 4 ist ein Ablaufdiagramm eines beispielhaften Prozesses 400 zum Rendem von Inhaltselementen, die zwei oder mehr Fragmente einer Antwort überspannen. Der Prozess 400 kann von einem Client durchgeführt werden, der auf einer Anwendervonichtung läuft.
  • Der Client erhält ein nächstes Fragment einer Antwort (410). Der Client bestimmt, ob das Fragment einen Anfangsteil eines neuen Inhaltselements aufweist (420). Der Client kann diese Bestimmung vornehmen, indem er nach Datenobjektkennungen in dem Fragment sucht. Wenn zum Beispiel Inhaltselemente durch JSON-Objekte definiert sind, kann der Client das Fragment für eine linke geschweifte Klammer suchen, die den Anfang eines JSON-Objekts angibt. Wenn das Fragment keinen Anfangsteil eines neuen Inhaltselements aufweist, erhält der Client ein nächstes Fragment der Antwort (410).
  • Wenn das Fragment einen Anfangsteil eines neuen Inhaltselements aufweist, bestimmt der Client, ob das erhaltene Fragment, d.h. das aktuelle Fragment und zuvor erhaltene Fragmente, das gesamte neue Inhaltselement aufweisen (430). Das heißt, der Client bestimmt, ob er alle Teile des neuen Inhaltselements erhalten hat. Der Client kann das Fragment nach Datenobjektkennungen durchsuchen, um diese Bestimmung vorzunehmen.
  • Wenn der Client bestimmt, dass er nicht alle Teile des neuen Inhaltselements erhalten hat, erhält er ein nächstes Fragment der Antwort (440) und bestimmt erneut, ob dieses nächste Fragment und zuvor erhaltene Fragmente das gesamte neue Inhaltselement aufweisen (430). Da Inhaltselemente zwei oder mehr Fragmente einer Antwort überspannen können, kann der Client diesen Prozess mehrere Male wiederholen.
  • Wenn der Client bestimmt, dass er alle Teile des neuen Inhaltselements erhalten hat, fügt er diese Teile zusammen (450). Der Client kann die Teile zusammenfügen, während er sie empfängt, oder kann sie alle auf einmal zusammenfügen, nachdem er alle Teile empfangen hat. In manchen Fällen kann das Inhaltselement vollständig in einem einzigen Fragment der Antwort enthalten sein. In solchen Fällen ist kein Zusammenfügen erforderlich.
  • Der Client rendert das zusammengefügte Inhaltselement in einem Anzeigepuffer auf der Anwendervorrichtung (460). Danach bestimmt der Client, ob das aktuelle Fragment einen Teil eines neuen Inhaltselements aufweist (420), da ein einzelnes Fragment mehrere Inhaltselemente enthalten kann. Wenn nicht, erhält der Client ein nächstes Fragment der Antwort (410).
  • In manchen Fällen, während der Client Daten schrittweise empfängt und rendert, kann eine Antwort teilweise fehlschlagen. Zum Beispiel könnte eine Antwort mit hundert Inhaltselementen fehlschlagen, nachdem der Client nur zwanzig Inhaltselemente empfangen hat. Ein solcher Fehlschlag kann zum Beispiel auftreten, wenn das Transportschichtprotokoll UDP ist. UDP erfordert keine Kommunikationskanäle und ist daher für Unzuverlässigkeit des darunterliegenden Netzwerks anfällig.
  • Wenn dies eintritt, wird in manchen Implementierungen ein Fehler inline gezeigt, d.h. ein Fehler wird angezeigt, wo die verbleibenden achtzig Inhaltselemente sonst angezeigt worden wären. Anwender des Clients können mit dieser Fehlemachricht in der grafischen Anwenderoberfläche interagieren, um erneut ein Laden der verbleibenden achtzig Inhaltselemente zu versuchen.
  • Wenn der Client ein fehlerhaftes Inhaltselement empfängt, wenn z.B. der Client ein Inhaltselement mit fehlenden Daten empfängt, kann der Client den Inhalt still fallen lassen.
  • Ausführungsfbrmen des Gegenstands und die Maßnahmen und Operationen, die in dieser Patentschrift beschrieben sind, können in digitalem elektronischen Schaltkreis, in greifbar ausgeführter Computersoftware oder -firmware, in Computerhardware, aufweisend die in dieser Patentschrift offenbarten Strukturen und deren strukturelle Äquivalente oder in Kombinationen aus einem oder mehreren von ihnen implementiert sein. Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands können als ein oder mehrere Computerprogramme implementiert sein, d.h. ein oder mehrere Module von Computerprogrammanweisungen, die auf einem greifbaren, nicht transitorischen Speichermedium zur Ausführung durch eine oder Steuerung des Betriebs einer Datenverarbeitungseinrichtung codiert sind. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten, ausgebreiteten Signal codiert sein, z.B. einem maschinenerzeugten, elektrischen, optischen oder elektromagnetischen Signal, das erzeugt wird, um Informationen zur Übertragung an eine geeignete Empfangereinrichtung zur Ausführung durch eine Datenverarbeitungseinrichtung zu codieren. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Direkt- oder serieller Zugriffsspeichervorrichtung oder eine Kombination aus einem oder mehreren von ihnen sein oder ein Teil davon sein. Ein Computerspeichermedium ist kein ausgebreitetes Signal.
  • Der Begriff „Datenverarbeitungseinrichtung“ umfasst alle Arten von Einrichtungen, Vorrichtungen und Maschinen zur Verarbeitung von Daten, aufweisend als Beispiel einen programmierbaren Prozessor, einen Computer oder mehrere Prozessoren oder Computer. Datenverarbeitungseinrichtungen können Spezialzwecklogikschaltkreise, z.B. ein FPGA (feldprogrammierbares Gate-Array), eine ASIC (anwendungsspezifische integrierte Schaltung) oder eine GPU (Grafikverarbeitungseinheit) aufweisen. Die Einrichtungen können auch, zusätzlich zu Hardware, einen Code aufweisen, der eine Ausführungsumgebung für Computerprogramme erstellt, z.B. einen Code, der Prozessorfirmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination aus einem oder mehreren von ihnen darstellt.
  • Ein Computerprogramm, das auch als ein Programm, eine Software, eine Softwareanwendung, eine App, ein Modul, ein Softwaremodul, eine Engine, ein Skript oder ein Code bezeichnet oder beschrieben werden kann, kann in jeder Form einer Programmiersprache geschrieben werden, aufweisend kompilierte oder interpretierte Sprachen oder deklarative oder Verfahrenssprachen, und kann in jeder Form eingesetzt werden, aufweisend als ein alleinstehendes Programm oder als ein Modul, eine Komponente, eine Engine, ein Unterprogramm oder eine andere Einheit, die zur Ausführung in einer Rechenumgebung geeignet ist, wobei die Umgebung einen oder mehrere Computer aufweisen kann, die durch ein Datenkommunikationsnetzwerk an einem oder mehreren Orten miteinander verbunden sind.
  • Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Computerprogramm kann in einem Teil einer Datei gespeichert sein, der andere Programme oder Daten hält, z.B. ein oder mehrere Skripte, die in einem Markup-Sprachdokument gespeichert sind, in einer einzigen Datei, die dem fraglichen Programm zugeschrieben ist, oder in mehreren koordinierten Dateien, z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile eines Codes speichern.
  • Die Prozesse und Logikabläufe, die in dieser Patentschrift beschrieben sind, können von einem oder mehreren Computern ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Operationen durch Bearbeiten von Eingangsdaten und Erzeugen von Ausgang durchzuführen. Die Prozesse und Logikabläufe können auch durch Spezialzweck-Logikschaltkreise durchgeführt werden, z.B. ein FPGA, eine ASIC oder eine GPU oder durch eine Kombination von Spezialzweck-Logikschaltkreisen und einem oder mehreren programmierten Computern.
  • Computer, die für die Ausführung eines Computerprogramms geeignet sind, können auf allgemeinen oder Spezialzweck-Mikroprozessoren oder beiden oder jeder anderen Art von Zentralverarbeitungseinheit beruhen. Im Allgemeinen empfängt eine Zentralverarbeitungseinheit Anweisungen und Daten von einem Nur-Lese-Speicher oder einem Direktzugriffsspeicher oder beiden. Die wesentlichen Elemente eines Computers sind eine Zentralverarbeitungseinheit zur Ausführung von Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Die Zentralverarbeitungseinheit und der Speicher können durch Spezialzweck-Logikschaltkreise ergänzt oder in diese integriert werden.
  • Im Allgemeinen weist ein Computer auch eine oder mehrere Massenspeichervorrichtungen auf oder ist betriebsbereit an diese gekoppelt, um Daten von diesen zu empfangen oder Daten an diese zu übertragen. Die MassenspeichervonichttUlgen können zum Beispiel magnetische, magneto-optische oder optische Platten oder Festplattenlaufwerke sein. Ein Computer muss jedoch keine derartigen Vorrichtungen haben. Überdies kann ein Computer in eine andere Vorrichtung eingebettet sein, z.B. ein Mobiltelefon, ein persönlicher digitaler Assistent (PDA), ein mobiles Audio -oder Videoabspielgerät, eine Spielekonsole, einen Empfänger eines globalen Positionierungssystems (GPS) oder eine tragbare Speichervorrichtung, z.B. ein Flash-Drive eines universellen seriellen Busses (USB), um nur einige zu nennen.
  • Zum Vorsehen einer Interaktion mit einem Anwender können Ausführungsförmen des in dieser Patentschrift beschriebenen Gegenstands auf einem Computer mit einer Anzeigevorrichtung, z.B. einem LCD (Flüssigkristallanzeige, Liquid Crystal Display) Monitor, zum Anzeigen von Informationen für den Anwender und einer Eingabevomchtung, mit der der Anwender Eingaben in den Computer vorsehen kann, z.B. eine Tastatur, und einer Zeigervorrichtung, z.B. eine Maus, ein Trackball oder ein Berührungsfeld, implementiert sein oder ausgelegt sein, damit zu kommunizieren. Andere Arten von Vorrichtungen können verwendet werden, um auch Interaktion mit einem Anwender vorzusehen; zum Beispiel kann Rückmeldung, die für den Anwender vorgesehen ist, jede Form von sensorischer Rückmeldung, z.B. visueller Rückmeldung, auditorischer Rückmeldung oder taktiler Rückmeldung aufweisen; und Eingabe von dem Anwender kann in jeder Form empfangen werden, aufweisend akustische, sprachliche oder taktile Eingabe. Zusätzlich kann ein Computer mit einem Anwender durch Senden von Dokumenten zu und Empfangen von Dokumenten von einer Vorrichtung, die von dem Anwender verwendet wird, interagieren; zum Beispiel durch Senden von Webseiten an einen Webbrowser auf einer Vorrichtung des Anwenders in Antwort auf Anfragen, die von dem Webbrowser empfangen werden, oder durch Interagieren mit einer App, die auf einer Anwendervorrichtung, z.B. einem Smartphone oder elektronischen Tablet läuft. Ebenso kann ein Computer mit einem Anwender durch Senden von Textnachrichten oder anderen Formen von Nachricht an eine persönliche Vorrichtung, z.B. ein Smartphone, das eine Nachrichtenanwendung laufen lässt und antwortende Nachrichten von dem Anwender zurückerhält, interagieren.
  • Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands können in einem Rechensystem implementiert werden, das eine Backend-Komponente, z.B. wie einen Datenserver, implementiert oder das eine Middleware-Komponente aufweist, z.B. einen Anwendungsserver, oder das eine Frontend-Komponente, z.B. einen Client-Computer mit einer grafischen Anwenderoberfläche, einen Webbrowser oder eine App, durch die ein Anwender mit einer Implementierung des in dieser Patentschrift beschriebenen Gegenstands interagieren kann, oder eine Kombination aus einer oder mehreren solcher Backend-, Middleware- oder Frontend-Komponenten aufweist. Die Komponenten des Systems können in jeder Form oder jedem Medium einer digitalen Datenkommunikation miteinander verbunden sein, z.B. ein Kommunikationsnetzwerk. Beispiele für Kommunikationsnetzwerke weisen ein lokales Netzwerk (LAN) und ein Weitverkehrsnetzwerk (WAN), z.B. das Internet auf.
  • Das Rechensystem kann Clients und Server aufweisen. Ein Client und Server sind im Allgemeinen fern voneinander und interagieren typischerweise durch ein Kommunikationsnetzwerk. Das Verhältnis von Client und Server entsteht durch Computerprogramme, die auf den entsprechenden Computern laufen und ein Client-Server-Verhältnis zueinander haben. In manchen Ausführungsformen überträgt ein Server Daten, z.B. eine HTML-Seite, an eine Anwendervorrichtung, z.B. für den Zweck einer Anzeige von Daten bei und Empfangen von Anwendereingabe von einem Anwender, der mit der Vorrichtung interagiert, die als ein Client arbeitet. Daten, die bei der Anwendervorrichtung erzeugt werden, z.B. ein Ergebnis der Anwenderinteraktion, können bei dem Server von der Vorrichtung empfangen werden.
  • Zusätzlich zu den oben beschriebenen Ausführungsformen sind auch die folgenden Ausführungsformen innovativ:
    • Ausführungsform 1 ist ein Verfahren, das von Client-Software einer Social-Messaging-Plattfonn durchgeführt wird, die auf einer Anwendervorrichtung läuft, wobei das Verfahren umfasst:
      • Senden einer Inhaltsanfrage an einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervorrichtungen umfasst, wobei der Server ausgelegt ist, die Social-Messagüig-Plattform zu implementieren;
      • Empfangen einer Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf der Anwendervorrichtung, wobei die mehreren Fragmente die gesamte Antwort darstellen, wobei die Antwort Inhaltselemente und Metadaten, die die Inhaltselemente beschreiben, aufweist, und wobei jedes Inhaltselement renderbar und durch ein oder mehrere Datenobjekte definiert ist;
      • schrittweises Rendem, in einen Anzeigepuffer, der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, aufweisend Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge, die durch die Metadaten bestimmt wird, wobei der Anzeigepuffer eine Datenstruktur in einem Speicher der Anwendervonichtung ist; und
      • Anzeigen einer Gesamtheit oder eines Teils des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung.
    • Ausführungsform 2 ist das Verfahren von Ausführungsform 1, wobei die Client-Software eine alleinstehende App oder ein JavaScript-Programm ist, das in einem Webbrowser läuft, der auf der Anwendervonichtung installiert ist.
    • Ausführungsform 3 ist das Verfahren einer von Ausführungsformen 1-2, wobei die Metadaten, die die Inhaltselemente beschreiben, für jedes Inhaltselement eine Sequenzkennung aufweisen, die eine Stelle im Anzeigepuffer des Inhaltselements relativ zu anderen Inhaltselementen in der Antwort und relativ zu Inhaltselementen in zuvor gerenderten Antworten im Anzeigepuffer spezifiziert.
    • Ausführungsform 4 ist das Verfahren von Ausführungsform 3, wobei eine Sequenzkennung für ein entsprechendes Inhaltselement einer Zeit entspricht, zu der das Inhaltselement relativ zu anderen Inhaltselementen erstellt wurde.
    • Ausführungsform 5 ist das Verfahren einer von Ausführungsformen 1-4, wobei die Metadaten in einem Anfangsfragment der Antwort empfangen werden und eine Gesamtzählung von Inhaltselementen in der Antwort aufweisen und wobei das Verfahren ferner umfasst:
      • Rendem im Anzeigepuffer der Inhaltselemente im Anfangsfragment und Aufnehmen im Anzeigepuffer eines entsprechenden Platzhalters für jedes Inhaltselement in anschließenden Fragmenten der Antwort; und
      • Ersetzen der entsprechenden Platzhalter beim Rendern der Inhaltselemente in den anschließenden Fragmenten.
    • Ausführungsform 6 ist das Verfahren von Ausführungsform 5, wobei die Metadaten ferner für jedes Inhaltselement eine Sequenzkennung aufweisen und wobei ein entsprechender Platzhalter an einer Stelle im Anzeigepuffer erstellt wird, die durch die Sequenzkennung seines entsprechenden Inhaltselements spezifiziert ist.
    • Ausführungsform 7 ist das Verfahren einer von Ausführungsformen 1-6, wobei schrittweises Rendern der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden umfasst:
      • Bestimmen, dass ein erstes Fragment nur einen Anfangsteil eines bestimmten Inhaltselements aufweist;
      • Empfangen eines zweiten Fragments, das den Rest des bestimmten Inhaltselements aufweist;
      • Zusammenfügen des Anfangsteils und des Rests des bestimmten Inhaltselements; und
      • Rendern des zusammengefügten Inhaltselements im Anzeigepuffer.
    • Ausführungsform 8 ist das Verfahren von Ausführungsform 7, wobei das eine oder die mehreren Datenobjekte JSON-Objekte sind und wobei schrittweises Rendem der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, für jedes Inhaltselement umfasst:
      • Identifizieren des Anfangs eines JSON-Objekts, das das Inhaltselement definiert; und
      • Identifizieren des Endes des JSON-Objekts, das das Inhaltselement definiert.
    • Ausführungsform 9 ist das Verfahren einer von Ausführungsformen 1-8, wobei jedes der Fragmente der Antwort ein oder mehrere Transportschichtsegmente umfasst, die durch ein Transportschichtprotokoll für die Client-Software vorgesehen sind.
    • Ausführungsform 10 ist das Verfahren einer von Ausführungsformen 1-9, wobei, in jeder Antwort, Daten, die notwendig sind, um jedes Inhaltselement in der Antwort zu rendern, in dem einen oder den mehreren Datenobjekten, die das Inhaltselement definieren, oder in einem oder mehreren Datenobjekten, die Inhaltselemente definieren, die zuvor in der Antwort empfangen wurden, enthalten sind.
    • Ausführungsform 11 ist das Verfahren einer von Ausführungsformen 1-10, wobei der Server ein ferner Server ist.
    • Ausführungsform 12 ist ein System, umfassend:
      • einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervorrichtungen umfasst, wobei der Server ausgelegt ist, eine Social-Messaging-Plattform zu implementieren;
      • eine Anwendervorrichtung; und
      • Client-Software der Social-Messaging-Plattform, die auf der Anwendervorrichtung läuft,
      • wobei die Client-Software ausgelegt ist, das Verfahren einer von Ausführungsformen 1-11 durchzuführen.
    • Ausführungsform 13 ist ein Computerspeichermedium oder mehrere Computerspeichermedien, die Anweisungen speichern, die funktionsfähig sind, wenn von dem einen oder den mehreren Computern ausgeführt, den einen oder die mehreren Computer zu veranlassen, das Verfahren einer von Ausführungsformen 1-11 durchzuführen.
    • Ausführungsform 14 ist ein System, umfassend:
      • einen oder mehrere Computer und eine oder mehrere Speichervonichtungen, die ausgelegt sind, eine Social-Messaging-Plattform zu implementieren, wobei die eine oder mehreren Speichervomchtungen Anweisungen speichern, die, wenn von dem einen oder den mehreren Computern ausgeführt, den einen oder die mehreren Computer veranlassen, die Operationen durchzuführen, umfassend:
        • Empfangen einer Inhaltsanfrage von Client-Software der Social-Messaging-Plattform, wobei die Client-Software auf einer Anwendervorrichtung läuft;
        • Erhalten (i) von Inhaltselementen, die der Inhaltsanfrage entsprechen, (ii) Metadaten, die die Inhaltselemente beschreiben, und (iii) Daten, die notwendig sind, um die Inhaltselemente zu rendern, wobei die Metadaten, die die Inhaltselemente beschreiben, für jedes Inhaltselement eine Sequenzkennung aufweisen, die einen Ort in einem Anzeigepuffer der Anwendervorrichtung spezifiziert, wo das Inhaltselement relativ zu anderen Inhaltselementen gerendert werden sollte;
        • Erzeugen einer Antwort auf die Inhaltsanfrage, aufweisend:
          • Platzieren der Metadaten in einem Anfangsfragment der Antwort und
          • Platzieren der Daten, die notwendig sind, um jedes Inhaltselement zu rendern, in einem oder mehreren Datenobjekten, die das Inhaltselement definieren, oder in einem oder mehreren Datenobjekten, die ein Inhaltselement definieren, das dem Inhaltselement in der Antwort vorangeht; und
        • Senden der Antwort an die Client-Software.
  • Während diese Patentschrift viele spezifische Implementierungseinzelheiten enthält, sollten diese nicht als Einschränkungen des Umfangs einer Erfindung oder des Umfangs dessen was beansprucht wird oder werden könnte, ausgelegt werden, sondern vielmehr als Beschreibungen von Merkmalen, die für bestimmte Ausführungsformen bestimmter Erfindungen spezifisch sein könnten. Gewisse Merkmale, die in dieser Patentschrift im Zusammenhang mit separaten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert werden. Im Gegensatz dazu können verschiedene Merkmale, die im Zusammenhang mit einer einzigen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in jeder geeigneten Teilkombination implementiert werden. Überdies obwohl Merkmale, die oben beschrieben sind, in gewissen Kombinationen zu wirken und sogar anfänglich als solche beansprucht sein können, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in manchen Fällen aus der Kombination herausgenommen werden und der Anspruch kann auf eine Teilkombination oder Variation einer Teilkombination gerichtet sein.
  • Ebenso, während Operationen in einer bestimmten Reihenfolge in den Zeichnungen dargestellt und in den Ansprüchen angeführt sind, sollte dies nicht so verstanden werden, dass solche Operationen in der bestimmten Reihenfolge oder in einer aufeinanderfolgenden Reihe durchgeführt werden oder dass alle veranschaulichten Operationen durchgeführt werden, um wünschenswerte Ergebnisse zu erzielen. Unter gewissen Umständen kann Multitasking und Parallelverarbeitung von Vorteil sein. Überdies sollte die Trennung verschiedener Systemmodule und Komponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und sollte so verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen gemeinsam in einem einzigen Softwareprodukt integriert oder in mehrere Softwareprodukte verpackt sein können.
  • Es wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Andere Ausführungsformen liegen im Umfang der folgenden Ansprüche. Zum Beispiel können die in den Ansprüchen genannten Maßnahmen in einer anderen Reihenfolge durchgeführt werden und noch immer wünschenswerte Ergebnisse liefern. Als ein Beispiel erfordern die in den beiliegenden Figuren gezeigten Prozesse nicht unbedingt die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. In manchen Fällen kann Multitasking und Parallelverarbeitung von Vorteil sein.

Claims (24)

  1. System, umfassend: einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervorrichttungen umfasst, wobei der Server ausgelegt ist, eine Social-Messaging-Plattform zu implementieren; eine Anwendervorrichtung; und Client-Software der Social-Messaging-Plattform, die auf der Anwendervorrichtung läuft, wobei die Client-Software ausgelegt ist, Operationen durchzuführen, umfassend: Senden einer Inhaltsanfrage an den Server; Empfangen einer Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf der Anwendervorrichtung, wobei die mehreren Fragmente die gesamte Antwort darstellen, wobei die Antwort Inhaltselemente und Metadaten aufweist, die die Inhaltselemente beschreiben, und wobei jedes Inhaltselement renderbar und durch ein oder mehrere Datenobjekte definiert ist; schrittweises Rendem, in einen Anzeigepuffer, der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, aufweisend Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge, die durch die Metadaten bestimmt wird, wobei der Anzeigepuffer eine Datenstruktur in einem Speicher der Anwendervorrichtung ist; und Anzeigen einer Gesamtheit oder eines Teils des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung.
  2. System nach Anspruch 1, wobei die Client-Software eine alleinstehende App oder ein JavaScript-Programm ist, das in einem Webbrowser läuft, der auf der Anwendervorrichtung installiert ist.
  3. System nach Anspruch 1, wobei die Metadaten, die die Inhaltselemente beschreiben, für jedes Inhaltselement eine Sequenzkennung aufweisen, die eine Stelle im Anzeigepuffer des Inhaltselements relativ zu anderen Inhaltselementen in der Antwort und relativ zu Inhaltselementen in zuvor gerenderten Antworten im Anzeigepuffer spezifiziert.
  4. System nach Anspruch 3, wobei eine Sequenzkennung für ein entsprechendes Inhaltselement einer Zeit entspricht, zu der das Inhaltselement relativ zu anderen Inhaltselementen erstellt wurde.
  5. System nach Anspruch 1, wobei die Metadaten in einem Anfangsfragment der Antwort empfangen werden und eine Gesamtzählung von Inhaltselementen in der Antwort aufweisen und wobei die Operationen ferner umfassen: Rendern im Anzeigepuffer der Inhaltselemente im Anfangsfragment und Aufnehmen im Anzeigepuffer eines entsprechenden Platzhalters für jedes Inhaltselement in anschließenden Fragmenten der Antwort; und Ersetzen der entsprechenden Platzhalter beim Rendem der Inhaltselemente in den anschließenden Fragmenten.
  6. System nach Anspruch 5, wobei die Metadaten ferner für jedes Inhaltselement eine Sequenzkennung aufweisen und wobei ein entsprechender Platzhalter an einer Stelle im Anzeigepuffer erstellt wird, die durch die Sequenzkennung seines entsprechenden Inhaltselements spezifiziert ist.
  7. System nach Anspruch 1, wobei schrittweises Rendem der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, umfasst: Bestimmen, dass ein erstes Fragment nur einen Anfangsteil eines bestimmten Inhaltselements aufweist; Empfangen eines zweiten Fragments, das den Rest des bestimmten Inhaltselements aufweist; Zusammenfügen des Anfangsteils und des Rests des bestimmten Inhaltselements; und Rendem des zusammengefügten Inhaltselements im Anzeigepuffer.
  8. System nach Anspruch 7, wobei das eine oder die mehreren Datenobjekte JSON-Objekte sind und wobei schrittweises Rendem der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, für jedes Inhaltselement umfasst: Identifizieren des Anfangs eines JSON-Objekts, das das Inhaltselement definiert; und Identifizieren des Endes des JSON-Objekts, das das Inhaltselement definiert.
  9. System nach Anspruch 1, wobei jedes der Fragmente der Antwort ein oder mehrere Transportschichtsegmente umfasst, die durch ein Transportschichtprotokoll für die Client-Software vorgesehen sind.
  10. System nach Anspruch 1, wobei, in jeder Antwort, Daten, die notwendig sind, um jedes Inhaltselement in der Antwort zu rendern, in dem einen oder den mehreren Datenobjekten, die das Inhaltselement definieren, oder in einem oder mehreren Datenobjekten, die Inhaltselemente definieren, die zuvor in der Antwort empfangen wurden, enthalten sind.
  11. System nach Anspruch 1, wobei der Server ein ferner Server ist.
  12. Verfahren, das von Client-Software einer Social-Messaging-Plattform durchgeführt wird, die auf einer Anwendervorrichtung läuft, wobei das Verfahren umfasst: Senden einer Inhaltsanfrage an einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervoirrichtungen umfasst, wobei der Server ausgelegt ist, die Social-Messaging-Plattform zu implementieren; Empfangen einer Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf der Anwendervorrichtung, wobei die mehreren Fragmente die gesamte Antwort darstellen, wobei die Antwort Inhaltselemente und Metadaten aufweist, die die Inhaltselemente beschreiben, und wobei jedes Inhaltselement renderbar und durch ein oder mehrere Datenobjekte definiert ist; schrittweises Rendern, in einen Anzeigepuffer, der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, aufweisend Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge, die durch die Metadaten bestimmt wird, wobei der Anzeigepuffer eine Datenstruktur in einem Speicher der Anwendervorrichtung ist; und Anzeigen einer Gesamtheit oder eines Teils des Anzeigepuffers auf einer Anzeige der Anwendervorrichtung.
  13. Verfahren nach Anspruch 12, wobei die Client-Software eine alleinstehende App oder ein JavaScript-Programm ist, das in einem Webbrowser läuft, der auf der Anwendervorrichtung installiert ist.
  14. Verfahren nach Anspruch 12, wobei die Metadaten, die die Inhaltselemente beschreiben, für jedes Inhaltselement eine Sequenzkennung aufweisen, die eine Stelle im Anzeigepuffer des Inhaltselements relativ zu anderen Inhaltselementen in der Antwort und relativ zu Inhaltselementen in zuvor gerenderten Antworten im Anzeigepuffer spezifiziert.
  15. Verfahren nach Anspruch 14, wobei eine Sequenzkennung für ein entsprechendes Inhaltselement einer Zeit entspricht, zu der das Inhaltselement relativ zu anderen Inhaltselementen erstellt wurde.
  16. Verfahren nach Anspruch 12, wobei die Metadaten in einem Anfangsfragment der Antwort empfangen werden und eine Gesamtzählung von Inhaltselementen in der Antwort aufweisen und wobei das Verfahren ferner umfasst: Rendem im Anzeigepuffer der Inhaltselemente im Anfangsfragment und Aufnehmen im Anzeigepuffer eines entsprechenden Platzhalters für jedes Inhaltselement in anschließenden Fragmenten der Antwort; und Ersetzen der entsprechenden Platzhalter beim Rendem der Inhaltselemente in den anschließenden Fragmenten.
  17. Verfahren nach Anspruch 16, wobei die Metadaten ferner für jedes Inhaltselement eine Sequenzkennung aufweisen und wobei ein entsprechender Platzhalter an einer Stelle im Anzeigepuffer erstellt wird, die durch die Sequenzkennung seines entsprechenden Inhaltselements spezifiziert ist.
  18. Verfahren nach Anspruch 12, wobei schrittweises Rendern der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden umfasst: Bestimmen, dass ein erstes Fragment nur einen Anfangsteil eines bestimmten Inhaltselements aufweist; Empfangen eines zweiten Fragments, das den Rest des bestimmten Inhaltselements aufweist; Zusammenfügen des Anfangsteils und des Rests des bestimmten Inhaltselements; und Rendern des zusammengefügten Inhaltselements im Anzeigepuffer.
  19. Verfahren nach Anspruch 18, wobei das eine oder die mehreren Datenobjekte JSON-Objekte sind und wobei schrittweises Rendem der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden für jedes Inhaltselement umfasst: Identifizieren des Anfangs eines JSON-Objekts, das das Inhaltselement definiert; und Identifizieren des Endes des JSON-Objekts, das das Inhaltselement definiert.
  20. Verfahren nach Anspruch 12, wobei jedes der Fragmente der Antwort ein oder mehrere Transportschichtsegmente umfasst, die durch ein Transportschichtprotokoll für die Client-Software vorgesehen sind.
  21. Verfahren nach Anspruch 12, wobei, in jeder Antwort, Daten, die notwendig sind, um jedes Inhaltselement in der Antwort zu rendern, in dem einen oder den mehreren Datenobjekten, die das Inhaltselement definieren, oder in einem oder mehreren Datenobjekten, die Inhaltselemente definieren, die zuvor in der Antwort empfangen wurden, enthalten sind.
  22. Verfahren nach Anspruch 12, wobei der Server ein ferner Server ist.
  23. Nicht transitorisches computerlesbares Speichermedium bzw. nicht transitorische computerlesbare Speichermedien, die Anweisungen speichern, die funktionsfähig sind, wenn von einem oder mehreren Computern ausgeführt, den einen oder die mehreren Computer zu veranlassen, Operationen durchzuführen, umfassend: Senden einer Inhaltsanfrage an einen Server, der einen oder mehrere Computer und eine oder mehrere Speichervorrichtungen umfasst, wobei der Server ausgelegt ist, eine Social-Messaging-Plattform zu implementieren; Empfangen einer Antwort auf die Inhaltsanfrage von dem Server schrittweise in mehreren Fragmenten von einer Transportschicht eines Netzwerkstapels auf dem einen oder den mehreren Computern, wobei die mehreren Fragmente die gesamte Antwort darstellen, wobei die Antwort Inhaltselemente und Metadaten aufweist, die die Inhaltselemente beschreiben, und wobei jedes Inhaltselement renderbar und durch ein oder mehrere Datenobjekte definiert ist; schrittweises Rendern, in einen Anzeigepuffer, der Inhaltselemente in den Fragmenten wie die Fragmente empfangen werden, aufweisend Platzieren der Inhaltselemente im Anzeigepuffer in einer Reihenfolge, die durch die Metadaten bestimmt wird, wobei der Anzeigepuffer eine Datenstruktur in einem Speicher des einen oder der mehreren Computer ist; und Anzeigen einer Gesamtheit oder eines Teils des Anzeigepuffers auf einer Anzeige des einen oder der mehreren Computer.
  24. System, umfassend: einen oder mehrere Computer und eine oder mehrere Speichervorrichtungen, die ausgelegt sind, eine Social-Messaging-Plattform zu implementieren, wobei die eine oder mehreren Speichervorrichtungen Anweisungen speichern, die, wenn von dem einen oder den mehreren Computern ausgeführt, den einen oder die mehreren Computer veranlassen, Operationen durchzuführen, umfassend: Empfangen einer Inhaltsanfrage von Client-Software der Social-Messaging-Plattform, wobei die Client-Software auf einer Anwendervorrichtung läuft; Erhalten von (i) Inhaltselementen, die der Inhaltsanfrage entsprechen, (ii) Metadaten, die die Inhaltselemente beschreiben, und (iii) Daten, die notwendig sind, um die Inhaltselemente zu rendem, wobei die Metadaten, die die Inhaltselemente beschreiben, für jedes Inhaltselement eine Sequenzkennung aufweisen, die einen Ort in einem Anzeigepuffer der Anwendervorrichtung spezifiziert, wo das Inhaltselement relativ zu anderen Inhaltselementen gerendert werden sollte; Erzeugen einer Antwort an die Inhaltsanfrage, aufweisend: Platzieren der Metadaten in einem Anfangsfragment der Antwort und Platzieren der Daten, die notwendig sind, um jedes Inhaltselement zu rendern, in einem oder mehreren Datenobjekte, die das Inhaltselement definieren, oder in einem oder mehreren Datenobjekten, die ein Inhaltselement definieren, das dem Inhaltselement in der Antwort vorangeht: und Senden der Antwort an die Client-Software.
DE202019005788.9U 2018-09-19 2019-09-19 Progressive API-Antworten Expired - Lifetime DE202019005788U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/136,093 US20200089779A1 (en) 2018-09-19 2018-09-19 Progressive API Responses
US16/136,093 2018-09-19

Publications (1)

Publication Number Publication Date
DE202019005788U1 true DE202019005788U1 (de) 2022-01-31

Family

ID=68136541

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005788.9U Expired - Lifetime DE202019005788U1 (de) 2018-09-19 2019-09-19 Progressive API-Antworten

Country Status (8)

Country Link
US (2) US20200089779A1 (de)
EP (1) EP3854036A1 (de)
JP (1) JP7217342B2 (de)
KR (1) KR20210089145A (de)
CN (1) CN112913195A (de)
BR (1) BR112021004736A8 (de)
DE (1) DE202019005788U1 (de)
WO (1) WO2020061373A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11170064B2 (en) * 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US20230359483A1 (en) * 2020-12-25 2023-11-09 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for applet page rendering, electronic device and storage medium

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
JP2004287631A (ja) 2003-03-20 2004-10-14 Konami Co Ltd ダウンロードサービスシステム、端末、指令列の実行方法、ならびに、プログラム
US20040237082A1 (en) * 2003-05-22 2004-11-25 Alcazar Mark A. System, method, and API for progressively installing software application
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US9990439B2 (en) * 2007-08-14 2018-06-05 Nbcuniversal Media, Llc Flexible method and system for providing digital content
US20090049373A1 (en) * 2007-08-14 2009-02-19 Nbc Universal, Inc. Method and system for user receipt of digital content
CN101802823A (zh) * 2007-08-20 2010-08-11 诺基亚公司 用于流式多媒体数据的分段的元数据和位标
US20090089448A1 (en) * 2007-09-28 2009-04-02 David Sze Mobile browser with zoom operations using progressive image download
US20100070643A1 (en) * 2008-09-11 2010-03-18 Yahoo! Inc. Delivery of synchronized metadata using multiple transactions
US9043276B2 (en) * 2008-10-03 2015-05-26 Microsoft Technology Licensing, Llc Packaging and bulk transfer of files and metadata for synchronization
US8996547B2 (en) * 2008-10-31 2015-03-31 Microsoft Technology Licensing, Llc Dynamic fragmentation of digital media
US20100115575A1 (en) * 2008-11-03 2010-05-06 At&T Intellectual Property I, L.P. System and method for recording and distributing media content
US8412841B1 (en) * 2009-08-17 2013-04-02 Adobe Systems Incorporated Media content streaming using stream message fragments
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8631436B2 (en) * 2009-11-25 2014-01-14 Nokia Corporation Method and apparatus for presenting media segments
WO2011066691A1 (en) * 2009-12-04 2011-06-09 Streamocean, Inc. System and method to deliver multimedia content for display through network
US8321426B2 (en) * 2010-04-30 2012-11-27 Hewlett-Packard Development Company, L.P. Electronically linking and rating text fragments
US20130080268A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Multi-platform media syndication customization
US8863165B2 (en) * 2010-11-01 2014-10-14 Gracenote, Inc. Method and system for presenting additional content at a media system
US20120131609A1 (en) * 2010-11-19 2012-05-24 Media Patents, S.L. Methods, apparatus and systems for delivering and receiving data
US9860572B2 (en) * 2011-06-08 2018-01-02 Koninklijke Kpn N.V. Spatially segmented content delivery
US9256859B2 (en) * 2011-07-26 2016-02-09 Salesforce.Com, Inc. Systems and methods for fragmenting newsfeed objects
US20130080579A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Dynamically-executed syndication services
US20130230292A1 (en) * 2012-03-02 2013-09-05 Care Cam Innovations, Llc Apparatus, Method and Computer-Readable Storage Medium for Media Processing and Delivery
US9276989B2 (en) * 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US20130285937A1 (en) * 2012-04-27 2013-10-31 Mobitv, Inc Connected multi-screen video management
US20140123159A1 (en) * 2012-10-31 2014-05-01 Telefonaktiebolaget L M Ericsson (Publ) Providing Content On Demand
TW201427354A (zh) 2012-12-19 2014-07-01 Hon Hai Prec Ind Co Ltd 漸進式資料編碼傳輸系統及方法
US11233841B2 (en) * 2013-03-15 2022-01-25 Yottaa, Inc. Systems and methods for configuration-based optimization by an intermediary
US9710469B2 (en) * 2013-03-15 2017-07-18 Comcast Cable Communications, Llc Efficient data distribution to multiple devices
US9432427B2 (en) * 2013-07-25 2016-08-30 Futurewei Technologies, Inc. System and method for effectively controlling client behavior in adaptive streaming
KR20150029913A (ko) * 2013-09-11 2015-03-19 한국전자통신연구원 청크 단위로 콘텐트를 전달하는 콘텐트 시스템 및 방법
WO2015041711A1 (en) * 2013-09-20 2015-03-26 Yottaa, Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US10178147B1 (en) 2014-01-02 2019-01-08 Instart Logic, Inc. Client-side location address translation
EP3105903B1 (de) * 2014-02-13 2019-08-07 Koninklijke KPN N.V. Anforderung mehrerer blöcke aus einem netzwerkknoten auf basis von einer einzigen anforderungsnachricht
US10423481B2 (en) * 2014-03-14 2019-09-24 Cisco Technology, Inc. Reconciling redundant copies of media content
US9483780B2 (en) * 2014-03-27 2016-11-01 Google Inc. Providing content using integrated objects
FR3019428A1 (fr) * 2014-03-31 2015-10-02 Orange Dispositif et procede de commande a distance de la restitution de contenus multimedia
WO2016057188A1 (en) * 2014-10-09 2016-04-14 Wrap Media, LLC Active receipt wrapped packages accompanying the sale of products and/or services
US11303691B2 (en) * 2015-02-02 2022-04-12 Vmware, Inc. Streaming progress updates and results of rest API operations
US10223136B2 (en) * 2016-09-30 2019-03-05 Salesforce.Com, Inc. Generating content objects using an integrated development environment
US10157102B2 (en) * 2016-12-29 2018-12-18 Whatsapp Inc. Techniques to scan and reorganize media files to remove gaps
JP6747303B2 (ja) 2017-01-13 2020-08-26 富士通株式会社 通信装置、通信システム、通信方法、および、通信プログラム
US10999391B2 (en) * 2017-10-30 2021-05-04 Sony Interactive Entertainment LLC Dynamic filtering and amelioration of content stream manifests

Also Published As

Publication number Publication date
JP2022500785A (ja) 2022-01-04
EP3854036A1 (de) 2021-07-28
WO2020061373A1 (en) 2020-03-26
US20200089779A1 (en) 2020-03-19
US20230021023A1 (en) 2023-01-19
BR112021004736A8 (pt) 2022-11-22
BR112021004736A2 (pt) 2021-06-01
CN112913195A (zh) 2021-06-04
JP7217342B2 (ja) 2023-02-02
KR20210089145A (ko) 2021-07-15

Similar Documents

Publication Publication Date Title
DE102016125783A1 (de) Bereitstellen von Vorschlägen für die Interaktion mit einem automatisierten Assistenten in einem Multi-User-Nachrichtenaustausch-Thread
DE112016005265T5 (de) Verbesserte Push-Nachrichtenübermittlung
DE202014011539U1 (de) System zum verteilten Verarbeiten in einer Nachrichtenübermittlungsplattform
DE202015009885U1 (de) Priorisierung von Nachrichten
DE202010018483U1 (de) System zum Zusammenführen von Bearbeitungen für eine Konversation in einem gehosteten Konversationssystem
DE202020005670U1 (de) Abfassen von Mitteilungen sozialer Medien, die sich auf mehrere Mitteilungen beziehen
DE112013000487T5 (de) Erweiterte gemeinsame Bildschirmnutzung in einer elektronischen Besprechung
DE202014011541U1 (de) System zum Herstellen einer Vertrauensverknüpfung
DE102016125509A1 (de) Einbindung von auswählbaren Anwendungsverknüpfungen in Nachrichtenaustausch-Threads
DE202012013479U1 (de) System zur Synchronisierung von Aktionen im Hintergrund einer Anwendung
DE202014010919U1 (de) Ein System zur Bereitstellung optischer Darstellungen von E-Mails zur effizienten Verarbeitung von E-Mails
DE202014010951U1 (de) Entfernungsabhängige Herabstufung von Suchrankings
DE202019106796U1 (de) Elektronisches Ereignismanagementsystem
DE112020000091T5 (de) Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen
DE112020004312T5 (de) Übersetzung von eingebetteten mehrformatdateien
DE202014010939U1 (de) Systeme für das Assoziieren von Microposts mit geografischen Standorten
DE202019005789U1 (de) Bereitstellung von Ereignisinhalten
DE112016000962T5 (de) System und verfahren zur strukturierung von bewertungen mit automatisch erzeugten tags
DE102017122363A1 (de) Einstufen von Suchergebnisdokumenten
DE112015006537T5 (de) Gerätebasierte filterung von inhaltselementen, die mit mobilen anwendungen verbunden sind
US20230021023A1 (en) Progressive api responses
DE102016205009A1 (de) Intelligente interaktive Bildschirmaufnahme
DE202014010904U1 (de) Benachrichtigungsmodul
DE202017104084U1 (de) Kontextinformation für eine angezeigte Ressource, die ein Bild enthält
DE202020005729U1 (de) Aufnahme und Präsentation von Medieninhalt

Legal Events

Date Code Title Description
R207 Utility model specification
R156 Lapse of ip right after 3 years