2010-05-05 3 views
1

Je songe à utiliser Rx (Reactive Framework) pour interroger de façon asynchrone l'API de recherche Twitter sur un mot clé donné. L'exemple d'application que j'aimerais créer devrait pouvoir afficher de nouveaux tweets dans la console.Comment utiliser Rx pour interroger de manière asynchrone la recherche Twitter?

Pensez-vous qu'il est possible de faire cela? Serait-ce plus simple que d'utiliser des techniques de programmation standard?

Comment le feriez-vous?

Merci! Jeremy

Répondre

4

Une maquette rapide de la façon dont cela pourrait être fait. Remarque, je n'ai fait qu'une simple requête web mais cela devrait facilement s'étendre pour interagir avec l'API Twitter.

Mise à jour: mon exemple précédent ne fonctionnait pas bien avec les demandes répétées. L'exemple amélioré suivant utilise Observable.Interval pour générer un flux continu de graduations, ce qui entraîne la création de requêtes et le téléchargement de réponses.

Observable 
    .Interval(TimeSpan.FromSeconds(5)) 
    .Select(ticks => (HttpWebRequest)WebRequest.Create("http://demicode.com")) 
    .Select(request => Observable.FromAsyncPattern(request.BeginGetResponse, 
     asyncResult => 
     { 
      using(var response = request.EndGetResponse(asyncResult)) 
      using (var sr = new StreamReader(response.GetResponseStream())) 
      { 
       return DateTime.Now.ToString() + sr.ReadToEnd(); 
      } 
     })) 
    .SelectMany(getContent => getContent()) 
    .ObserveOnDispatcher() 
    .Subscribe(content => downloadContent.Text = content); 

Mise à jour 2: Semble comme l'utilisation des bibliothèques comme TweetSharp traiterait les demandes Twitter bien pour vous. Observable.FromAsyncPattern combiné avec la méthode asynchrone twitter.BeginRequest fait une belle combinaison.

+0

Merci pour l'exemple. Pensez-vous qu'il est possible d'aller chercher toutes les 5 secondes les nouveaux tweets? Comme votre exemple n'utilise pas Twitter, comment feriez-vous pour vérifier si le contenu de la page a changé au cours des 5 dernières secondes et afficher ces changements? – japf

+0

@Jalfp: voir mon échantillon amélioré. Toujours pas d'intégration sur Twitter (j'y reviendrai si le temps le permet), mais le téléchargement du contenu est au moins téléchargeable toutes les 5 secondes. –

+0

Merci beaucoup pour votre effort! Je vais essayer d'utiliser votre échantillon pour mon idée. J'apprécie vraiment votre aide :-) – japf

Questions connexes