2010-05-05 23 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