如何从C#中的服务器获取实时(连续)数据?
我打开HTTPWebRequest但服务器没有完成该请求,服务器每20秒发送一些文本数据,我想处理文本数据并在服务器完成请求10分钟后显示给用户。
答案 0 :(得分:1)
HTTP不是会话协议。它意味着像这样工作
您可以做的基本上是使用TCPClient / Socket
,这会将您移动到低于HTTP的层,并允许您创建持久连接。
有各种各样的框架可以让您的生活更轻松。
另外,您可能需要查看Comet。
答案 1 :(得分:1)
您可以使用WebClient的流API:
var client = new WebClient();
client.OpenReadCompleted += (sender, args) =>
{
using (var reader = new StreamReader(args.Result))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
// do something with the result
// don't forget that this callback
// is not invoked on the main UI thread so make
// sure you marshal any calls to the UI thread if you
// intend to update your UI here.
}
}
};
client.OpenReadAsync(new Uri("http://example.com"));
以下是Twitter Streaming API的完整示例:
using System;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
var client = new WebClient();
client.Credentials = new NetworkCredential("username", "secret");
client.OpenReadCompleted += (sender, args) =>
{
using (var reader = new StreamReader(args.Result))
{
while (!reader.EndOfStream)
{
Console.WriteLine(reader.ReadLine());
}
}
};
client.OpenReadAsync(new Uri("https://stream.twitter.com/1.1/statuses/sample.json"));
Console.ReadLine();
}
}