这是我关于堆栈溢出的第一篇文章,但我已经使用它很长时间了。首先,我想对这个伟大的开发者社区表示感谢,他们帮助我解决了许多本科时期的问题。
现在,我一直在做一个asp.net项目,在这个项目中,我想获得一个特定查询(例如星际迷航)的twitter流,并且总是显示最近10个左右关于它的tweet的滚动列表。我也在使用一个情绪评分器,我想显示每个tweet的评分结果,可能在tweet本身旁边。
到目前为止,我已经能够创建一个简单的控制台应用程序,在这个应用程序中,我使用适当的OAuth头连接到流api,并将json解析为可读的格式。然而,我现在想创建一个类似于上面提到的asp.net应用程序。许多示例展示了如何发布简单的帖子,或者从用户获取最近的20个状态,并通过返回视图来更新页面,但是这些示例都没有展示如何处理twitter的连续/无限流。我的问题是如何从控制器中继asp.net中的twitter流?是否有可能在每次新状态进入流时返回一个视图?还是我走错方向了?我也读过关于PushStreamContent -是否有可能使用这种方法中继twitter流,然后可能进行ajax调用?我觉得这不是最简单的解决办法。我也怀疑我是否需要使用线程。
我是非常新的asp.net mvc,也许mvc不是解决我的问题的最佳方式。但是,如果可以的话,我想使用它。任何提示,方法,或帮助指导我在正确的方向将非常感激。我希望这个问题足够明确和具体。
下面是我的TwitterStream类的一些示例代码:
public void StartStream()
{
try
{
HttpWebRequest request = MakeRequest(); //makes oauth request
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
sReader = new StreamReader( resp.GetResponseStream() );
while(true)
{
PopulateTweetJsonQueue(); //throw tweets into queue for processing
}
}
catch(WebException e)
{
BackOffStrategy(e);
}
}
使用此方法,您可以发布tweet并重定向
public ActionResult Tweet(string tweet)
{
var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager);
// Process the response
var accessTokenResponse = twitter.ProcessUserAuthorization();
// Is Twitter calling back with authorization?
if (Tweet_Token != null)
{
string accessToken = Tweet_Token;
var tokenSecret = twitter.TokenManager.GetTokenSecret(accessToken);
TwitterPush tw = new TwitterPush(twitter_app, twitter_secret, accessToken, tokenSecret);
if (tweet != "")
{
var response = tw.UpdateStatus(tweet);
}
return View();
} return View();
}