以外と情報の少ない DotNetOpenAuth で Streaming してみました。
// http://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F96#x1d31ba1
// がオリジナル。
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Xml.Linq;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OAuth;
using DotNetOpenAuth.OAuth.ChannelElements;
partial class TwitterConsumer {
public static void streaming(ConsumerBase consumer, string accessToken) {
HttpWebRequest req;
#region DotNetOpenAuth っぽいところ
MessageReceivingEndpoint endpoint = new MessageReceivingEndpoint(
"https://userstream.twitter.com/2/user.json",
HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest);
var extraData = new Dictionary<string, string>();
//if (option != null) {
// option.FillExtraData(ref extraData);
//}
req = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData);
#endregion
//サーバーからの応答を受信するためのHttpWebResponseを取得する
HttpWebResponse res = (HttpWebResponse)req.GetResponse(); // throws WebException.
//応答データを受信するためのStreamを取得する
Stream st = res.GetResponseStream();
StreamReader sr = new StreamReader(st);
//10秒間だけデータを取得する
DateTime startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalSeconds < 30) {
Debug.WriteLine(sr.ReadLine());
}
//こちらから接続を閉じる
req.Abort();
res.Close();
sr.Close();
Debug.WriteLine("----- 終了しました! -----");
}
}