Streaming API vs Rest API?

L’exemple canonique ici est l’API de Twitter. Je comprends conceptuellement le fonctionnement de l’API REST, c’est essentiellement une requête auprès de leur serveur pour votre requête particulière, dans laquelle vous recevez ensuite une réponse (JSON, XML, etc.), ce qui est excellent.

Cependant, je ne sais pas exactement comment une API de streaming fonctionne en coulisse. Je comprends comment le consumr. Par exemple avec Twitter, écoutez pour obtenir une réponse. À partir de la réponse, écoutez les données dans lesquelles les tweets sont divisés en morceaux. Construisez les morceaux dans un tampon de chaîne et attendez un saut de ligne qui signifie la fin du Tweet. Mais que font-ils pour que cela fonctionne?

Disons que j’ai beaucoup de données et que je voulais configurer une API de streaming localement pour que d’autres personnes sur le net l’utilisent (tout comme Twitter). Comment est-ce fait, quelles technologies? Est-ce quelque chose que Node JS pourrait gérer? J’essaie simplement de comprendre ce qu’ils font pour que cette chose fonctionne.

    L’API de stream de Twitter est essentiellement une requête de longue durée laissée ouverte. Les données y sont introduites au fur et à mesure de leur disponibilité.

    La conséquence de cela est que le serveur devra être capable de gérer de nombreuses connexions HTTP ouvertes simultanées (une par client). Un grand nombre de serveurs existants ne gèrent pas très bien, par exemple, les moteurs de servlets Java atsortingbuent un thread par requête, ce qui peut (a) être assez coûteux et (b) atteindre rapidement le paramètre normal max-threads et empêcher les connexions ultérieures.

    Comme vous l’avez deviné, le modèle Node.js correspond bien mieux à l’idée d’une connexion en continu qu’un modèle de servlet. Les requêtes et les réponses sont exposées en tant que stream dans Node.js, mais n’occupent pas un processus ou un thread entier, ce qui signifie que vous pouvez continuer à importer des données dans le stream aussi longtemps qu’il est ouvert sans trop de ressources (bien que cela est subjectif). En théorie, de nombreuses réponses ouvertes simultanées peuvent être connectées à un processus unique et ne peuvent être écrites que si nécessaire.

    Si vous ne l’avez pas déjà examiné, la documentation HTTP pour Node.js peut être utile.

    Je jetterais également un coup d’œil au client Twitter de technoweenie pour voir à quoi ressemble le consommateur de cette API avec Node.js, la fonction stream () en particulier .