Как использовать Rx для асинхронного запроса поиска в Twitter? - PullRequest
1 голос
/ 05 мая 2010

Я думаю об использовании Rx (Reactive Framework) для асинхронного запроса API поиска в Twitter по заданному ключевому слову. Пример приложения, которое я хотел бы создать, должен отображать новые твиты в консоли.

Как вы думаете, возможно ли это сделать? Будет ли это проще, чем использовать стандартные методы программирования?

Как бы вы это сделали?

Спасибо! Джереми

1 Ответ

4 голосов
/ 05 мая 2010

Быстрый макет того, как это можно сделать. Обратите внимание, что я только сделал простой веб-запрос, но он должен легко расширяться для взаимодействия с API Twitter.

Обновление: Мой предыдущий пример не работал с повторяющимися запросами. В следующем улучшенном образце используется Observable.Interval для генерации непрерывного потока тиков, который управляет созданием запросов и загрузкой ответов.

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);

Обновление 2: Похоже, что использование библиотек, таких как TweetSharp , будет прекрасно обрабатывать запросы Twitter Observable.FromAsyncPattern в сочетании с асинхронным twitter.BeginRequest методом создает хорошую комбинацию.

...