2010-05-05 25 views
1

我在考慮使用Rx(Reactive Framework)來異步查詢給定關鍵字上的Twitter搜索API。我想要構建的示例應用程序應該能夠在控制檯中顯示新的推文。如何使用Rx異步查詢Twitter搜索?

你認爲這是可能的嗎?它會比使用標準編程技術更簡單嗎?

你會怎麼做?

謝謝! Jeremy

回答

4

快速模擬如何完成。請注意,我只做了一個簡單的網絡請求,但這應該很容易擴展到與Twitter API交互。

更新:我以前的樣本不適合重複請求。以下改進示例使用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方法做出了很好的組合。

+0

謝謝你的樣品。你認爲每5秒鐘可以獲取新的推文嗎?由於您的示例不使用Twitter,您將如何檢查頁面內容在最近5秒內是否發生了變化並顯示更改? – japf 2010-05-05 14:18:04

+0

@Jalfp:看看我的改進樣本。儘管如此,仍然沒有Twitter整合(如果時間允許,我會研究這一點),但內容下載至少每5秒下載一次。 – 2010-05-05 19:52:14

+0

非常感謝您的努力!我會嘗試將你的樣本用於我的想法。我真的很感激你的幫助:-) – japf 2010-05-05 20:28:28